python if语句导致错误

2024-09-27 07:24:02 发布

您现在位置:Python中文网/ 问答频道 /正文

someStuff = False
def spawn():
    print(someStuff)
    if( 3==4):
       someStuff = True  
while (someStuff==False):
    spawn()

下面是代码,print(sometuff)不起作用,它说“UnboundLocalError:赋值前引用的局部变量'sometuff'。但是,如果去掉if语句,那么它就工作了。你知道吗


Tags: 代码falsetrueifdef语句print赋值
3条回答

如果您有:

def spawn():
     print(someStuff)

python将假定someStuff必须是一个全局变量。但是,如果函数中有赋值:

def spawn():
     print(someStuff)
     if 3==4:
         someStuff = True

然后python假设它是一个局部变量,在使用它之前需要赋值。你知道吗

通过在函数中放入global someStuff,可以让python知道它是全局的:

def spawn():
     global someStuff
     print(someStuff)
     if 3==4:
         someStuff = True

函数中的赋值someStuff = True告诉Python您将创建一个局部变量someStuff。然后Python在赋值之前看到print(someStuff)中对someStuff的引用并发出抱怨。您需要通过将someStuff声明为global来解决这种模糊性。将函数的第一行设为global someStuff。请注意,这样做意味着后面的赋值将影响全局变量。你知道吗

对于python中全局变量的工作方式来说,这是一个奇怪的问题。你知道吗

这种改变应该起作用:

someStuff = False
def spawn():
    print(someStuff)
    if( 3==4):
       global someStuff
       someStuff = True  
while (someStuff==False):
    spawn()

有关为什么会这样的更多信息:请阅读this

相关问题 更多 >

    热门问题