交作业顺便解疑
Topic source
def createCounter():
f = [0]
print('闭包外--')
def counter():
print('闭包内--')
f[0] = f[0] + 1 return f[0]
return counter
# 测试counterA = createCounter()
print(counterA(), counterA())
print(counterA())
counterB = createCounter()
print(counterB(), counterB())
# 输出结果:# 闭包外--# 闭包内--# 闭包内--# 1 2# 闭包内--# 3# 闭包外--# 闭包内--# 闭包内--# 1 2
闭包内打印与函数外打印的交替
这部分的内容讲的是真的简略,建议搜两三篇博客看看
3#的问题:内部作用域要修改全局/嵌套作用域的不可变变量时,需分别先用global/nonlocal声明,仅访问则不需要
7#:返回的内函数对象,反复调用当然只调用内函数。想调用外函数那就调用外函数啊
10#:。。看原文“另一个需要注意的问题是,返回的函数并没有立刻执行,而是直到调用了f()
才执行”
12#:用list是因为list是可变变量,不需要nonlocal声明。Python2里没有nonlocal这样子就只能用list实现
(ps:上面仅是我的理解,因为也是刚学Python可能会有错还请指出)
- 1
- 2
啧啧ghz
学习了谢谢。 这里的list,有点像tuple中用list实现元素可更改