为什么这不会使两个闭包表现不同?

时间:2015-09-26 13:05:33

标签: python-2.7 closures

在此代码中:

> python
>>> a = []
>>> for i in range(2):
...     def printer():
...          print i
...     a.append(printer)
...
>>> a
[<function printer at 0x01EDE330>, <function printer at 0x01EDE2F0>]
>>> a[0]()
1
>>> a[1]()
1
>>>
>>> a[0] == a[1]
False

看来我创建了两个不同的函数,并将它们存储在数组a[]中。

我不明白为什么函数看起来不同,但每个函数的结果都不是。我原以为这两个函数都是相同的(IE第二次迭代会重新定义第一次迭代),或者函数会不同结果会有所不同(分别为0和1)

我希望并期待后者...

0 个答案:

没有答案