Задать вопрос
@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 функции.

Но видимо он этого не делает, почему?
  • Вопрос задан
  • 138 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Python-разработчик: расширенный курс + нейросети
    12 месяцев
    Далее
  • Академия Эдюсон
    Python-разработчик + ИИ
    9 месяцев
    Далее
  • ProductStar × РБК
    Профессия: Python-разработчик + ИИ
    8 месяцев
    Далее
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
Пригласить эксперта
Ответы на вопрос 1
@Kaloo
локальная переменная 'x', на которую ссылается перед присваиванием
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы