В Python 2.7, выполнив следующий код:Python глобальные и локальные переменные
def f():
a = a + 1
f()
дает следующий результат:
Traceback (most recent call last):
File "test.py", line 4, in <module>
f()
File "test.py", line 2, in f
a = a + 1
UnboundLocalError: local variable 'a' referenced before assignment
Но если я изменить код ниже:
def f():
a[0] = a[0] + 1
f()
Я получаю следующую ошибку:
Traceback (most recent call last):
File "test.py", line 4, in <module>
f()
File "test.py", line 2, in f
a[0] = a[0] + 1
NameError: global name 'a' is not defined
Почему Python с учетом a
является локальной переменной, когда она является int
, глобальная, когда list
? В чем причина этого?
P.S .: Я экспериментировал после чтения this thread.
Я думаю, что ошибка не имеет ничего общего с назначением в g. Я редактировал вопрос, удаляя несвязанные утверждения. – fossilet
@fossilet - извиняюсь, что я принял ваш вопрос - я обновляю свой ответ, дайте мне знать, если это поможет. –