闭包
一、闭包的定义
1,闭包是嵌套在函数中的
2,闭包是内层函数对外层函数的变量(非全局变量)的引用(改变)
def func1():
'''
此函数满足前两个条件,但还不是闭包
:return:
'''
name = '太白'
def func2():
print(name)
3, 闭包需要将其作为一个对象返回,而且必须逐层返回直至最外层函数的返回值
二、闭包举例
# 这是闭包 def wrapper(): name = '太白' def inner(): print(name) return inner # 这也是闭包 def wrapper(name): def inner(): print(name) return inner n1 = 'wusir' wrapper(n1) # 这不是闭包 name = 'alex' def wrapper(): def inner(): print(name) return inner
三、闭包的作用
# 非闭包函数 随着函数的结束临时空间关闭 def func1(s1): n = 1 n += s1 print(n) func1(5) func1(5) func1(5) func1(5)
# 闭包函数 def wrapper(s1): n = 1 def inner(): nonlocal n n += s1 print(n) return inner ret = wrapper(5) ret() ret() ret() ret()
闭包的机制:python遇到闭包,产生一个空间,这个空间不会随着函数的结束而消失。
作者:wangkaiok —— 小菜鸟111
出处:http://www.cnblogs.com/wangkaiok/
本文版权归作者和博客园共有,但未经作者同意禁止转载,转载必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。