python函数之闭包

2019-01-03  本文已影响11人  飞跑的蛤蟆

目录

<a name="python函数之闭包" id="python函数之闭包"><h1>python函数之闭包</h1></a>

<a name="什么是闭包" id="什么是闭包"><h2>什么是闭包</h2></a>

闭包是(Closure)内层函数对外层函数(非全局)的变量的引用,这就叫闭包。闭包是由函数和其相关的引用环境组合而成的实体。

<a name="python中的namespace" id="python中的namespace"><h2>python中的namespace</h2></a>

python中通过提供namespace来实现重命名函数/方法、变量等信息的识别,共有三种namespace:

当函数/方法、变量等信息发生重名时,python会按照 local namespace -> global namespace -> build-in namespace的顺序搜素用户所需元素,并且以第一个找到此元素的namespace为准。

同时,python中的内置函数locals()globals()可以用来查看不同namespace中定义的元素。
<a name="闭包的条件" id="闭包的条件"><h2>闭包的条件</h2></a>

python中的闭包必须要满足三个条件:

优点:

>>> def wrapper():
    name = 'Walter White'  # 局部变量常驻于内存
    def inner():
        print(name)  # 在内层函数中使用了外层函数的局部变量
    return inner  # 返回函数名

>>> ret = wrapper()  # ret是一个内层函数
>>> ret()  # 因为name变量已经常驻内存了,这里能随时调用
Walter White
上一篇下一篇

猜你喜欢

热点阅读