尽管进行了星号导入,但仍未从另一个文件访问变量
Not accessing variable from another file in spite of star import
我有一个文件 "screenDisplay" 与 "globalvars." 位于同一目录中 globalvars 有一个名为 "gameIsMuted." 的布尔值 在 screenDisplay 的顶部我有 from globalvars import *
。如果我在 screenDisplay 中使用的实例中不使用 "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
。
如果您不知道使用哪一个,或者没有偏好,请使用后一种形式。这使得代码更容易理解,因为它更清楚变量的来源。
我有一个文件 "screenDisplay" 与 "globalvars." 位于同一目录中 globalvars 有一个名为 "gameIsMuted." 的布尔值 在 screenDisplay 的顶部我有 from globalvars import *
。如果我在 screenDisplay 中使用的实例中不使用 "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
。
如果您不知道使用哪一个,或者没有偏好,请使用后一种形式。这使得代码更容易理解,因为它更清楚变量的来源。