欢迎光临
我们一直在努力

Python闭包

1、局部变量的生命周期

def func1():
    test = 100          # 局部变量
    def func2():
        test2 = 200     # 局部变量
        print(test2)
    print(test)
    func2()

func1()

①局部变量随着函数的调用而生成

②随着函数的结束而释放(销毁)

③每次调用函数,局部变量都是全新的

2、闭包的作用

闭包可以延长外层函数局部变量的生命周期(即使外层函数调用结束,其局部变量也不会立即释放,而是被内层函数“记住”并继续使用)

3、闭包的三个必要条件

①有内外函数

②内函数引用外函数的局部变量

③外函数返回内函数

4、闭包示例

def outer():            # 外函数
    x = 100             # 外函数的局部变量

    def inner():        # 内函数
        print(x)        # 内函数引用了外函数的变量 x

    return inner        # 外函数返回内函数(不带括号)

# 调用闭包
func = outer()          # func 接收的是 inner 函数对象
func()                  # 输出 100
func()                  # 仍然输出 100(x 没有被释放)
func()                  # 每次调用,x 都被“记住”

流程示意图:

outer() 被调用
    ↓
创建局部变量 x = 100
    ↓
定义 inner 函数(此时 inner 记住了 x)
    ↓
返回 inner 函数对象
    ↓
outer() 调用结束(但 x 没有被销毁,因为被 inner 引用)
    ↓
func = inner
    ↓
func() → 打印 x → 100

5、闭包本质

闭包=函数+它引用的变量

相当于把“函数”和“环境数据”打包在一起

赞(0)
未经允许不得转载:171主机测评 » Python闭包
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址