闭包就是在一个函数内部使用其他函数的变量的情况,即函数包裹着函数(函数中的变量是局部变量,其作用域为函数内部)
闭包的条件:
- def outter():
- a = 1
- print("外函数")
- def inner():
- b = 1
- print("内函数")
- print("a+b = {}".format(a+b))
- return inner
-
- res = outter()
- res()
外函数
内函数
a+b = 2
其他写法:
1、
- def outter():
- a = 1
- print("外函数")
- def inner():
- b = 1
- print("内函数")
- print("a+b = {}".format(a+b))
- return inner()
-
- res = outter()
- print(res)
外函数
内函数
a+b = 2
None
返回的是inner(),而inner()没有返回值,因此在最后还会打印一个None
2、
- def outter():
- a = 1
- print("外函数")
- def inner():
- b = 1
- print("内函数")
- print("a+b = {}".format(a+b))
- return inner
-
- res = outter()
- print(res)
外函数
.inner at 0x000002D036EA8E50>