Специальная переменная __all__

Модули могут иметь специальную переменную __all__ , чтобы ограничить , какие переменные импортируются при использовании from mymodule import * .

Дан следующий модуль:

 # mymodule.py

__all__ = ['imported_by_star']

imported_by_star = 42
not_imported_by_star = 21

 

Только imported_by_star импортируется при использовании from mymodule import * :

 >>> from mymodule import *
>>> imported_by_star
42
>>> not_imported_by_star
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'not_imported_by_star' is not defined

 

Тем не менее, not_imported_by_star может быть импортирован в явном виде:

 >>> from mymodule import not_imported_by_star
>>> not_imported_by_star
21