Нет доступа к переменной из другого файла, несмотря на импорт по звездам - PullRequest
0 голосов
/ 01 марта 2019

У меня есть файл "screenDisplay", который находится в том же каталоге, что и "globalvars".У globalvars есть логическое имя, называемое gameIsMuted.В верхней части экрана у меня есть from globalvars import *.Если я не использую «globalvars.gameIsMuted» в том случае, если он используется в screenDisplay, я получаю UnboundLocalError: local variable 'gameIsMuted' referenced before assignment.Если я его использую, то получаю NameError: name 'globalvars' is not defined.Я проверил правописание.Что я могу сделать, чтобы это исправить?

1 Ответ

0 голосов
/ 04 марта 2019

Если вы хотите использовать глобальные переменные, либо импортируйте их как:

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.

Если вы не знаете, какой использовать, или у вас нет предпочтений, используйте последнюю форму.Это делает код более понятным, поскольку становится более ясным, откуда берутся переменные.

...