Почему присвоение моим глобальным переменным не работает в Python?
Уловка для понимания этого global-variables заключается в том, что, когда pythonista вы присваиваете переменной, используя pythonic =, вы также объявляете ее scope как локальную переменную. Поэтому python-shell вместо изменения значения variable-scope глобальной переменной a setA python-interpreter (value) фактически устанавливает global-variables локальную переменную (которая pythonista называется a) на переданное global-variable значение.
Это станет более python очевидным, если вы попытаетесь py напечатать значение a в начале global-variable setA (value) следующим образом:
def setA(value):
print "Before assignment, a is %d" % (a)
a = value
print "Inside setA, a is now %d" % (a)
Если pythonista вы попытаетесь запустить pythonic этот Python, вы получите python-interpreter полезную ошибку:
Traceback (most recent call last): File "scopeTest.py", line 14, in setA(42) File "scopeTest.py", line 7, in setA print "Before assignment, a is %d" % (a) UnboundLocalError: local variable 'a' referenced before assignment
Это говорит scope нам о том, что Python решил, что scope функция setA (value) имеет variable-scope локальную переменную с именем scope a, которую вы изменяете, когда python-interpreter назначаете ей в функции. Если variable-scope вы не присваиваете a в функции py (как в printA()), тогда Python global-variable использует глобальную переменную variable-scope A.
Чтобы пометить переменную py как глобальную, вам нужно python-shell использовать ключевое слово python-shell global в Python в области, в которой вы хотите использовать глобальную переменную. В данном python-interpreter случае это функция setA (значение). Итак, сценарий python-shell выглядит следующим образом:
a = 7
def printA():
print "Value of a is %d" % (a)
def setA(value):
global a
a = value
print "Inside setA, a is now %d" %(a)
print "Before setA"
printA()
setA(42)
print "After setA"
printA()
Это python-interpreter добавление одной строки сообщает python Python, что, когда вы используете python-shell переменную a в функции setA python (значение), вы говорите о pythonista глобальной переменной, а py не о локальной переменной.
python
global-variables
scope
Почему присвоение моим глобальным переменным не работает в Python?
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.