@IIggoorrII

Как работают пространства имен в python?

x=10
def f():
    print(x)
    x="HELLO"
f()

Трассировка:

UnboundLocalError: local variable 'x' referenced before assignment


По сути при вызове функции f для нее создается local namespace
Внутри, при вызове функции print с аргументом x, интерпретатор ищет переменную x в local namespace, затем в global namespace, затем в builtins.

А при связывании x со строкой "hello", имя x будет находится в local namespace функции.

Но видимо он этого не делает, почему?
  • Вопрос задан
  • 123 просмотра
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
Пригласить эксперта
Ответы на вопрос 1
@Kaloo
локальная переменная 'x', на которую ссылается перед присваиванием
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы