def createCounter(): f = 0 def counter():
#nonlocal f f += 1 return f return counter
#报错原因,闭包外的变量f在闭包内部只能读取不能修改。
#nonlocal用于声明,修改嵌套作用域(enclosing 作用域,外层非全局作用域)中的变量,
#所以需要加上nonlocal f
分享一下,为什么评论里面的答案,用list就可以 之所以迷惑,还是因为我基础不好。没有深刻理解(之前书上有过,现在有了更深刻的切身体会,嘿嘿,分享给你) 可变数据类型,值可以改变:列表list和字典dict; 不可变数据类型,值不可以改变:整型int、浮点型float、字符串型string和元组tuple。
感谢!!!
Sign in to make a reply
严肃的笨小孩
def createCounter(): f = 0 def counter():
#报错原因,闭包外的变量f在闭包内部只能读取不能修改。
#nonlocal用于声明,修改嵌套作用域(enclosing 作用域,外层非全局作用域)中的变量,
#所以需要加上nonlocal f