python 閉包一例

babyyellow發表於2012-02-14
很少寫複雜的程式碼, 所以很少用到所謂的高階功能。

根據百度 知道的解釋

閉包是為了在程式碼退出或者執行完後,能夠保持它當時的執行環境,不被gc

當然了,這是我的個人理解。

python 的一個例子。

>>> import os,sys
>>> def a (s=0):
...     r=[s]
...     def x():
...         r[0]+=1
...         return r
...     return x
...
>>> c=a()
>>> print c()

>>> print c()
[1]
>>> print c()
[2]
>>> print c(100)
Traceback (most recent call last):
  File "", line 1, in
TypeError: x() takes no arguments (1 given)
>>> c=a(100)
>>> print c()

>>> print c()
[101]

a 函式執行完後,他執行時的上下文環境,因為存在函式c 透過x 的引用,而導致gc 不能回收a 的環境。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/133735/viewspace-716218/,如需轉載,請註明出處,否則將追究法律責任。

相關文章