闭包

一、闭包的定义

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遇到闭包,产生一个空间,这个空间不会随着函数的结束而消失。
原文地址:https://www.cnblogs.com/wangkaiok/p/9906654.html