Python-不明白为什么会发生unbundLocal错误

发布于 2021-02-02 23:24:27

我这里哪里错了?

counter = 0

def increment():
  counter += 1

increment()

上面的代码抛出一个UnboundLocalError

关注者
0
被浏览
190
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    Python没有变量声明,因此它必须弄清楚变量本身的范围。它是通过一个简单的规则来做到这一点的:如果在函数内部对变量进行了赋值,则该变量被视为局部变量。[1] 因此,

    counter += 1
    

    隐式地使counter本地化increment()。不过,尝试执行此行将尝试counter在分配本地变量之前读取它的值,从而导致UnboundLocalError。[2]

    如果counter是全局变量,则global关键字将有所帮助。如果increment()是局部函数和counter局部变量,则可以nonlocal在Python 3.x中使用。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看