Невозможно увеличить глобальную переменную от функции в python
Возможный дубликат:
Использование глобальных переменных в функции, отличной от той, которая их создала
У меня есть следующий script:
COUNT = 0
def increment():
COUNT = COUNT+1
increment()
print COUNT
Я просто хочу увеличить глобальную переменную COUNT, но это дает мне следующую ошибку:
Traceback (most recent call last):
File "test.py", line 6, in <module>
increment()
File "test.py", line 4, in increment
COUNT = COUNT+1
UnboundLocalError: local variable 'COUNT' referenced before assignment
Почему это так?
Ответы
Ответ 1
его глобальную переменную, сделайте так:
COUNT = 0
def increment():
global COUNT
COUNT = COUNT+1
increment()
print COUNT
Доступ к глобальным переменным возможен без объявления глобального, но если вы собираетесь изменить их значения, требуется глобальное объявление.
Ответ 2
Это связано с тем, что глобальные переменные не попадают в область вашей функции. Вы должны использовать оператор global
, чтобы заставить это для назначения:
>>> COUNT = 0
>>> def increment():
... global COUNT
... COUNT += 1
...
>>> increment()
>>> print(COUNT)
1
Обратите внимание, что использование globals - действительно плохая идея - это делает код трудным для чтения и сложным в использовании. Вместо этого верните значение из своей функции и используйте это, чтобы что-то сделать. Если вам нужно иметь доступ к данным из ряда функций, подумайте над созданием класса.
Также стоит отметить, что CAPITALS
является общим зарезервированным для констант, поэтому неплохо назвать ваши переменные такими, как это. Для обычных переменных предпочтительнее lowercase_with_underscores
.