Python闭包

函数的引用

程序运行时函数会被在内存中创建,并有一个十进制的内存地址,这个内存地址就被保存在函数名中,通过这个内存地址就可以找到这个函数,当然也可以使用内存地址去执行这个函数

def test():
    pass
# 内存地址保存在函数名中
# 将内存地址赋值给变量
ret=test
# 拿到内存地址后直接调用函数
ret()

什么是闭包

在一个外函数中定义了一个内函数,内函数运用了外函数的临时变量,并且外函数的返回值内函数的引用。这样就构成了一个闭包。

换句话说,闭包可以读取和操作它自身范围之外的变量。

闭包的构成条件

  • 嵌套函数
  • 内层函数调用外层的变量
  • 外层函数必须return内层函数

一个简单的闭包

def function_out(num):
    print("1、=====================", num)

    def function_in(num_in):
        print("2、=====================", num)
        print("3、=====================", num_in)

    return function_in


ret = function_out(99)
ret(88)

nonlocal

表示不使用内层函数的变量,而是使用外部的变量

def function_out(num):
    def function_in():
        nonlocal num
        print("1、=====================", num)
        num=99
    return function_in


ret = function_out(99)
ret()

你可能感兴趣的:(数据结构)