我试图使用闭包来消除函数签名中的变量(应用程序是编写连接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
添加回答
举报
0/150
提交
取消