闭包是内部函数对外部函数的作用域的变量的引用
闭包内的闭包函数私有化了变量,其实完成了数据的封装,类似于面向对象
装饰器用到了闭包
def func(): #外部函数
a = 1 #外部额函数作用域的变量
print('this is func')
def func1(num): #内部函数
print (num + a)
return func1
#运行外部函数,内部函数被创建
var = func()
var(3)
my_list = [1, 2, 3, 4]
def func(obj):
def func1():
obj[0] += 1
print(obj)
return func1
var = func(my_list)
var()
var()
var()
[2, 2, 3, 4]
[3, 2, 3, 4]
[4, 2, 3, 4]