为了账号安全,请及时绑定邮箱和手机立即绑定

Python lambda闭包作用域

Python lambda闭包作用域

肥皂起泡泡 2019-07-13 15:32:46
我试图使用闭包来消除函数签名中的变量(应用程序是编写连接Qt信号所需的所有函数,以便将大量参数控制到存储值的字典中)。我不明白为什么使用lambda不在其他函数中包装,则返回所有情况下的姓氏。names = ['a', 'b', 'c']def test_fun(name, x):     print(name, x)def gen_clousure(name):     return lambda x: test_fun(name, x)funcs1 = [gen_clousure(n) for n in names]funcs2 = [lambda x: test_fun(n, x)      for n in names]# this is what I wantIn [88]: for f in funcs1:    ....:     f(1)a 1b 1c 1# I do not understand why I get thisIn [89]: for f in funcs2:    ....:     f(1)    c 1    c 1    c 1
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 490 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信