def bibao(): li = [] n = [1] def inner(): li.append(n[0]) n[0] +=1 print(li) return inner b = bibao() b() b() 结果分别为[1]和[1,2]
简述
内部函数被当做对象返回时,夹带了这个内部函数之外的自由变量
闭包:带着当前变量环境的函数
b是inner函数,具有当前变量的值,li是一个空列表,n=[1]
b(),当b被调用时,li.append(1),n=[2],li=[1],这些变量都被存储在了__closure__[0]中
原文:https://www.cnblogs.com/taomin/p/10366793.html