Discuss / Python / 分享一下,不加nonlocal为什么会错

分享一下,不加nonlocal为什么会错

Topic source

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。

子鱼若鱼

#3 Created at ... [Delete] [Delete and Lock User]

感谢!!!


  • 1

Reply