我有一个文件“screenDisplay”,与“globalvars”位于同一目录中。 globalvars有一个名为“gameIsMuted”的bool。在screenDisplay的顶部,我有from globalvars import *
。如果我不在屏幕显示中使用“globalvars.gameIsMuted”,那么我会得到UnboundLocalError: local variable 'gameIsMuted' referenced before assignment
。如果我使用它,那么我得到NameError: name 'globalvars' is not defined
。我检查了拼写。我该怎么做才能解决这个问题?
如果要使用全局变量,请将它们导入为:
from globalvars import *
或者(可能更好):
import globalvars
引用变量的方式随后会发生变化:
文件:globalvars.py
gameIsMuted = False
guruMeditationError = False
isukuremuSukiDesu = True
两种不同的用法示例:
文件globals_test1.py:
from globalvars import *
print( "Muted ........ " + str( gameIsMuted ) )
print( "Meditation ... " + str( guruMeditationError ) )
print( "Icecream ..... " + str( isukuremuSukiDesu ) )
文件globals_test2.py:
import globalvars
print( "Muted ........ " + str( globalvars.gameIsMuted ) )
print( "Meditation ... " + str( globalvars.guruMeditationError ) )
print( "Icecream ..... " + str( globalvars.isukuremuSukiDesu ) )
请注意使用语法的不同之处。如果代码使用from blah import *
语法,则不需要限定符名称。但对于简单的import blah
,使用前缀blah.var_name
。
如果您不知道使用哪一个,或者没有偏好,请使用后一种形式。这使得代码更容易理解,因为变量源自哪里更清楚。