python3:
1 # 定义一个函数 2 def counter(start=0): 3 # 在函数内部再定义一个函数,并且这个函数用到了外边函数的变量,那么将这个函数以及用到的一些变量称之为闭包 4 def incr(num): 5 nonlocal start 6 sum = num + start 7 return sum 8 # 返回闭包的结果 9 return incr 10 11 # 给counter函数赋值,这个5传给参数start 12 c1 = counter(5) 13 # 这里的3其实传给了参数num 14 print(c1(3))
运行结果:
8 进程已结束,退出代码0
python2:
1 def counter(start=0): 2 count=[start] 3 def incr(): 4 count[0] += 1 5 return count[0] 6 return incr 7 8 c1 = closeure.counter(5) 9 print(c1()) # 6 10 print(c1()) # 7