python 闭包一例

很少写复杂的代码, 所以很少用到所谓的高级功能。

根据百度 知道的解释

闭包是为了在代码退出或者执行完后,能够保持它当时的运行环境,不被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 的环境。


请使用浏览器的分享功能分享到微信等