@RUNAMAN

Python. Область видимости. Как получить доступ к переменной из раздела __main__?

Ситуация вроде бы простейшая, но ничего не получается. Помогите пожалуйста.

main.py
b = 2
if __name__ == '__main__':
    a = 1
    print(a, b)

Если запускаем из модуль main.py, получаем, это понятно
>>> 1 2

Но если попробуем вызвать переменную а из модуля add.py

add.py
import main

print(main.a)
print(main.b)

Получаем ошибку
>>> print(main.a)
>>> AttributeError: module 'main' has no attribute 'a'
  • Вопрос задан
  • 488 просмотров
Пригласить эксперта
Ответы на вопрос 2
dimonchik2013
@dimonchik2013
non progredi est regredi
ты не объявляешь "а", откуда она там возьмется?
Ответ написан
@fireSparrow
Области видимости тут не причём.
Если модуль запускается не напрямую, а импортируется из другого модуля, то его атрибут __name__ не будет равен "__main__", и всё, что идёт внутри условия, просто не выполнится, и переменная 'a' вообще не будет создана.

Собственно, конструкцию if __name__ == '__main__' и используют в тех случаях, когда хотят, чтобы какая-то логика выполнялась ТОЛЬКО в том случае, если модуль запущен непосредственно, а не импортирован.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
29 нояб. 2024, в 10:38
5000 руб./за проект
29 нояб. 2024, в 10:27
100000 руб./за проект
29 нояб. 2024, в 09:43
100000 руб./за проект