Возможный дубликат:
ссылка перед ошибкой присваивания в python
локальная переменная, указанная перед назначением
Хорошо, я просто пытался выяснить, как работают области видимости переменных и работает в следующей ситуации. Все запущенные терминалы:
x = 1
def inc():
x += 5
inc()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in inc
UnboundLocalError: local variable 'x' referenced before assignment
Итак, я хорошо подумал, может быть, у меня нет доступа к x в моем методе, поэтому я попробовал:
def inc():
print x
1
Итак, это работает. Теперь я знаю, что могу просто сделать:
def inc():
global x
x += 1
И это сработает. Но мой вопрос: почему первый пример терпит неудачу. Я хотел бы ожидать, что, поскольку print x
работал, что x виден внутри функции, так почему бы x + = 5 не удалось?