在函数内部在定义一个函数,并且这个函数用到了外面函数的变量,那么这个函数以及用到的变量称之为闭包
def test(number):
print("----1----")
def test_in(number_in):
print("----2----")
print(number + number_in)
print("----3----")
return test_in
ret = test(100)
print(ret)
ret(100)
运行结果
----1----
----3----
<function test.<locals>.test_in at 0x28
----2----
200
必需条件
- 必须存在函数嵌套
- 内部函数必须引用外部函数的变量
- 内部函数必须不能引用全局变量
- 外部函数的返回值必须是内部函数的函数名