Python-2闭包

1.闭包:闭包是在嵌套函数中,内函数使用外函数的局部变量,并且返回了内函数。

2.特点:延长了局部变量的生命周期,持续到脚本执行结束。

3.意义:保护了内部变量,防止像使用全局变量(global)的时候被篡改。

nonlocal:是一个关键字用于访问封闭函数作用域中的变量。当内层函数在外层函数中被定义时,它们可以访问该外层函数的变量,这些变量被称为封闭函数变量。

代码:

"""
coding:utf-8
@Software:PyCharm
@Time:2023/4/26 11:11
@author:Panda
"""


# 闭包
def hobby():  # 外函数
    lin = 'xxx'  # 局部变量
    def hobbye():
        print('测试闭包函数{}'.format(lin))
    return hobbye()
hobby()
# Output:测试闭包函数xxx


# 延长num的周期,在闭包返回的时候注意“return inner”,如果两个函数都有传参
# 注意需要传出函数名,在最外面进行调用函数,否则无法调用到内部函数
def outer(num):
    def inner(val):
        print(num + val)
    return inner

func = outer(10)
func(15)
# Output:25


def outer():
    count = 0
    def inner():
        nonlocal count
        count += 1
        print(count)
    return inner


func = outer()
func()
func()
count = 20  # 因为有nonlocal的存在 不是全局变量 所以无法被篡改
func()
func()
func()

# Output:1 2 3 4 5

 

posted @ 2023-04-26 11:37  许个未来—  阅读(8)  评论(0编辑  收藏  举报