我想用不同的参数创建多个lambda函数,并将它们绑定到一个字典。你知道吗
dic_funcs = {}
dates = ['2018', '2019', '2020']
idx = ['0', '1', '2']
def printt(text):
print(text)
for d in dates:
for i in idx:
#print(d, i)
dic_funcs[d + '_' + i] = lambda:printt(d + '_' + i)
for key, item in dic_funcs.items():
print(key)
item()
print('-----')
我认为每个键和相应值(lambda函数)的结果都是相同的,但它们不是。你知道吗
2018_0
2020_2
-----
2018_1
2020_2
-----
2018_2
2020_2
-----
2019_0
2020_2
-----
2019_1
2020_2
-----
2019_2
2020_2
-----
2020_0
2020_2
-----
2020_1
2020_2
-----
2020_2
2020_2
-----
我想我每次都绑定了相同的日期和索引号。有什么问题吗?如果我能得到一些帮助我会很感激的。你知道吗
在lambda表达式中有一个
i
,它是从循环到idx
,还有一个d
,它是从循环到dates
。lambda表达式中的这两个值不是在函数定义时计算的,而是在调用函数时计算的,因此每次执行print(d + '_' + i)
时,函数只会查找d
和i
的当前值,这只是for d in dates
和for i in idx
中最后一个值,这就是为什么你每次都得到相同的值。你知道吗你可以用这样的方法来解决这个问题:
给了你想要的行为
相关问题 更多 >
编程相关推荐