python 赋值前引用的局部(?)变量[重复]

u5rb5r59  于 2023-02-07  发布在  Python
关注(0)|答案(3)|浏览(134)
    • 此问题在此处已有答案**:

UnboundLocalError trying to use a variable (supposed to be global) that is (re)assigned (even after first use)(14个答案)
3年前关闭。

test1 = 0
def test_func():
    test1 += 1
test_func()

我收到以下错误:
未绑定本地错误:赋值前引用了局部变量"test1"。
错误说'test1'是局部变量,但我认为该变量是全局变量
那么,它是全局的还是局部的?如何在不将全局test1作为参数传递给test_func的情况下解决此错误?

qhhrdooz

qhhrdooz1#

为了在函数内部修改test1,需要将test1定义为全局变量,例如:

test1 = 0
def test_func():
    global test1 
    test1 += 1
test_func()

但是,如果只需要读取全局变量,则可以不使用关键字global打印它,如下所示:

test1 = 0
def test_func():
    print(test1)
test_func()

但是,无论何时需要修改全局变量,都必须使用关键字global

o2rvlv0m

o2rvlv0m2#

最佳解决方案:不要使用global s

>>> test1 = 0
>>> def test_func(x):
        return x + 1

>>> test1 = test_func(test1)
>>> test1
1
gr8qqesn

gr8qqesn3#

您必须指定test1是全局的:

test1 = 0
def test_func():
    global test1
    test1 += 1
test_func()

相关问题