闭包
什么是闭包
闭是封闭,包是包含。
闭包:
- 内部函数对外部作用域里的变量的引用
- 函数内的属性,都是有生命周期,都是在函数执行期间
- 闭包内的闭包函数私有化了变量,完成了数据的封装,类似面向对象
demo:
def foo():
print('in foo()')
def bar():
print('in bar()')
# 1.直接运行内部函数报错
#bar()
# 2.考虑先运行外部函数,在运行内部函数,依然会报错
#foo()
#bar()
由于作用域的问题,函数内的属性都是有生命周期的,只有在函数执行期间
再考虑在这段代码,只有调用foo()是,内部的print()及bar()才能存活。
现在我们为了让foo()内的bar()存活,就是调用bar(),我们该怎么做?
把bar()函数返回给函数