私は C++ のバックグラウンドがあり、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]))
)
ここで正確に何が起こっているのですか?関数がリストに追加されると、どのような値になりますか? 誰かが私が理解できるようにこのコードを単純化してもらえますか?