函数的引用
程序运行时函数会被在内存中创建,并有一个十进制的内存地址,这个内存地址就被保存在函数名中,通过这个内存地址就可以找到这个函数,当然也可以使用内存地址去执行这个函数
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_inret = function_out(99)
ret(88)
nonlocal
表示不使用内层函数的变量,而是使用外部的变量
def function_out(num):def function_in():nonlocal numprint("1、=====================", num)num=99return function_inret = function_out(99)
ret()