我有一个C++的背景,并试图学习一些python。后期绑定python封闭
惠斯特我明白C++的虚拟函数,不幸的是,我不明白python中闭包的后期绑定是什么意思。
链接:https://gist.github.com/deemson/8efabf56d67623ead804
复制面食从教程:
functions = []
for n in [1, 2, 3]:
def func(x):
return n*x
functions.append(func)
# You would expect this to print [2, 4, 6]
print(
'calling a list of bad closures and output is: {}'
.format(str([function(2) for function in functions]))
)
究竟发生在这里?当函数被附加到列表中时,它具有什么值?有人可以简化这段代码让我明白。
但这样岂不一代产量[2 4 6]而不是[6 6 6] – RickMota
丹尼尔的答案是正确的 - 他抓住的东西,我没有。它们都指n,并且由于n在最后定值为2,所有函数的行为将完全相同。 – Christian
我已经修改过提到n的依赖关系,并且正在发布解决方案以澄清与C++中指针的连接。 – Christian