Python作用域:"UnboundLocalError: local variable 'c' referenced before assignment"。

6 浏览
0 Comments

Python作用域:"UnboundLocalError: local variable 'c' referenced before assignment"。

这个问题已经有答案了

尝试使用一个应该是全局的变量,但在第一次使用后被重新赋值了(UnboundLocalError)

在函数中使用全局变量

我正在尝试解决这个问题:

c = 1
def f(n):
    print c + n 
def g(n):
    c = c + n
f(1) # => 2
g(1) # => UnboundLocalError: local variable 'c' referenced before assignment

谢谢!

admin 更改状态以发布 2023年5月21日
0
0 Comments

全局状态是需要避免的,特别是需要改变它的情况。考虑一下是否应该使g()只使用两个参数,或者是否f()g()需要成为一个共同类的方法,其中c是实例属性。

class A:
    c = 1
    def f(self, n):
        print self.c + n
    def g(self, n):
        self.c += n
a = A()
a.f(1)
a.g(1)
a.f(1)

输出:

2
3

0
0 Comments

在函数内部,默认情况下,赋值的变量被视为本地变量。要赋值给全局变量,请使用global语句:

def g(n):
    global c
    c = c + n

这是Python的一些奇怪的领域之一,我从来没有真正适应它。

0