2024-09-27 07:24:02 发布
网友
someStuff = False def spawn(): print(someStuff) if( 3==4): someStuff = True while (someStuff==False): spawn()
下面是代码,print(sometuff)不起作用,它说“UnboundLocalError:赋值前引用的局部变量'sometuff'。但是,如果去掉if语句,那么它就工作了。你知道吗
如果您有:
def spawn(): print(someStuff)
python将假定someStuff必须是一个全局变量。但是,如果函数中有赋值:
someStuff
def spawn(): print(someStuff) if 3==4: someStuff = True
然后python假设它是一个局部变量,在使用它之前需要赋值。你知道吗
通过在函数中放入global someStuff,可以让python知道它是全局的:
global someStuff
def spawn(): global someStuff print(someStuff) if 3==4: someStuff = True
函数中的赋值someStuff = True告诉Python您将创建一个局部变量someStuff。然后Python在赋值之前看到print(someStuff)中对someStuff的引用并发出抱怨。您需要通过将someStuff声明为global来解决这种模糊性。将函数的第一行设为global someStuff。请注意,这样做意味着后面的赋值将影响全局变量。你知道吗
someStuff = True
print(someStuff)
global
对于python中全局变量的工作方式来说,这是一个奇怪的问题。你知道吗
这种改变应该起作用:
someStuff = False def spawn(): print(someStuff) if( 3==4): global someStuff someStuff = True while (someStuff==False): spawn()
有关为什么会这样的更多信息:请阅读this
如果您有:
python将假定
someStuff
必须是一个全局变量。但是,如果函数中有赋值:然后python假设它是一个局部变量,在使用它之前需要赋值。你知道吗
通过在函数中放入
global someStuff
,可以让python知道它是全局的:函数中的赋值
someStuff = True
告诉Python您将创建一个局部变量someStuff
。然后Python在赋值之前看到print(someStuff)
中对someStuff
的引用并发出抱怨。您需要通过将someStuff
声明为global
来解决这种模糊性。将函数的第一行设为global someStuff
。请注意,这样做意味着后面的赋值将影响全局变量。你知道吗对于python中全局变量的工作方式来说,这是一个奇怪的问题。你知道吗
这种改变应该起作用:
有关为什么会这样的更多信息:请阅读this
相关问题 更多 >
编程相关推荐