@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'
  • Вопрос задан
  • 277 просмотров
Пригласить эксперта
Ответы на вопрос 2
dimonchik2013
@dimonchik2013
совет, который уже дан - ничего не стоит
ты не объявляешь "а", откуда она там возьмется?
Ответ написан
@fireSparrow
Области видимости тут не причём.
Если модуль запускается не напрямую, а импортируется из другого модуля, то его атрибут __name__ не будет равен "__main__", и всё, что идёт внутри условия, просто не выполнится, и переменная 'a' вообще не будет создана.

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

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

Войти через центр авторизации
Похожие вопросы
Сбер Санкт-Петербург
от 100 000 до 100 000 ₽
Ovision Санкт-Петербург
от 100 000 до 300 000 ₽
09 мая 2021, в 12:34
2500 руб./за проект
09 мая 2021, в 12:06
1000 руб./за проект