Я думаю, вы неправильно понимаете, что значит переменная быть глобальной.Я настоятельно рекомендую прочитать документацию Python по областям и пространствам имен , но я сделаю все возможное, чтобы подвести итог так, чтобы это соответствовало вашей проблеме.
"Глобальная переменная" - это переменнаяэто находится в глобальном пространстве имен.Для каждого модуля есть отдельное глобальное пространство имен.Помимо модулей, классы и функции - единственные вещи, которые будут создавать новые области.Любые новые переменные, которые вы создаете, будут помещены в самую внутреннюю область.
Существует глобальное ключевое слово , которое можно использовать для ссылки на глобальные переменные, но это необходимо только при назначении дляглобальная переменная, например:
x = 5
def foo():
x = 10
def bar():
global x
x = 20
>>> x # global variable x
5
>>> foo() # foo creates a new x in the local scope
>>> x # global x is unchanged
5
>>> bar() # bar uses global keyword to reference the global x
>>> x # global x is now 20
20
В вашем изолированном примере кода attack
, hitpoints
и money
уже являются глобальными переменными, поскольку они не входят ни в какую другую область, и они будутбыть изменены в каждом цикле цикла.Если ваш код фактически находится в классе или функции, то добавление строки global attack, hitpoints, money
в начало этой области приведет к тому, что эти переменные будут установлены в глобальном пространстве имен для вашего модуля.