3
我注意到,这种结构创建功能
funcs = [lambda x: x**n for n in range(5)]
未能产生预期的效果,例如
[f(0.5) for f in funcs]
# [0.0625, 0.0625, 0.0625, 0.0625, 0.0625]
这个问题的标准解决方案是什么?我有自己的解决办法,这就是这个模式
def function_maker(n):
return lambda x: x**n
funcs = [function_maker(n) for n in range(5)]
[f(0.5) for f in funcs]
# [1.0, 0.5, 0.25, 0.125, 0.0625]
我不知道这是否是一个好主意。它会在更复杂的情况下隐藏更多令人讨厌的惊喜吗?
啊确定。这是我在lambda表达式中的'function_maker'吗? – innisfree
@innisfree是的。尽管使用函数会更清洁。 –