在Python 3
中追加函數對象列表時可能會丟失訂單嗎?Python列表的奇怪行爲
我的理解是,Python列表是有序的,確實運行
numbers = []
for i in range(10):
numbers.append(i)
print(numbers)
回報[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
預期。
如果我追加功能在此MWE對象然而,如:
functions = []
for k in range(10):
def test():
print('This is the %i th function.' %k)
functions.append(test)
,並呼籲functions[2]()
我得到This is the 9 th function.
有人可以使這種古怪的行爲有意義嗎?
[後期綁定關閉](http://docs.python-guide.org/en/latest/writing/gotchas/#late-binding-closures) –