python函数之闭包
目录
python函数之闭包
什么是闭包
闭包是(Closure)内层函数对外层函数(非全局)的变量的引用,这就叫闭包。闭包是由函数和其相关的引用环境组合而成的实体。
python中的namespace
python中通过提供namespace来实现重命名函数/方法、变量等信息的识别,共有三种namespace:
- local namespace:作用范围为当前函数或者类方法
- global namespace:作用范围为当前模块
- build-in namespace:作用范围为所有模块
当函数/方法、变量等信息发生重名时,python会按照 local namespace -> global namespace -> build-in namespace的顺序搜素用户所需元素,并且以第一个找到此元素的namespace为准。
同时,python中的内置函数locals()和globals()可以用来查看不同namespace中定义的元素。
闭包的条件
python中的闭包必须要满足三个条件:
- 1、必须是一个嵌套的函数
- 2、闭包必须返回嵌套函数
- 3、嵌套函数必须引用一个外部的非全局的局部自由变量
 闭包的优点
优点:
- 1、保护变量不被他人侵害
- 2、保持一个变量常驻内存
>>> def wrapper():
	name = 'Walter White'  # 局部变量常驻于内存
	def inner():
		print(name)  # 在内层函数中使用了外层函数的局部变量
	return inner  # 返回函数名
>>> ret = wrapper()  # ret是一个内层函数
>>> ret()  # 因为name变量已经常驻内存了,这里能随时调用
Walter White
posted on 2018-12-11 08:23 JesseChang 阅读(126) 评论(0) 收藏 举报
 
                    
                 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号