我試圖使用閉包來消除函數(shù)簽名中的變量(應(yīng)用程序是編寫連接Qt信號(hào)所需的所有函數(shù),以便將大量參數(shù)控制到存儲(chǔ)值的字典中)。我不明白為什么使用lambda不在其他函數(shù)中包裝,則返回所有情況下的姓氏。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
添加回答
舉報(bào)
0/150
提交
取消