Для чего Python __ все __ переменная уровня модуля? [дубликат]

24
задан igaurav 27 October 2014 в 12:14
поделиться

3 ответа

У него есть два целя:

  1. Любой, кто читает Источник узнает, что такое открытое общественное API. Это не предотвратить их из топки в частных декларациях, но обеспечивает хорошее предупреждение, а не.

  2. При использовании от Mod Import * , только имена, перечисленные в __ все __ . Это не так важно, на мой взгляд, потому что импортируя все действительно плохое представление.

48
ответ дан 28 November 2019 в 22:48
поделиться

Это контролирует то, что вы попадаете в вашу nameps, когда вы

from blah import *

см. Импорт * из пакета

4
ответ дан 28 November 2019 в 22:48
поделиться

http://docs.python.org/tutorial/modules.html#importing-from-a-package

Что происходит, когда пользователь пишет. от импорта звуковых эффектов *? В идеале, можно было бы надеяться, что это как-нибудь пройдет в файловую систему, находит, кто Субмодули присутствуют в упаковке, и импортирует их все. Это может потребовать долгое время и импорт субмодулей могут иметь нежелательные побочные эффекты, которые должно происходить только тогда, когда субмодуль явно импортируется.

Единственное решение для пакета - автор предоставляет явный указатель посылку. Импортная ведомость использует следующая конвенция: если код пакета __init__.py определяет a список с именем __all__, считается. список названий модулей, которые должны импортируется при импорте из упаковки *. встречается. Это зависит от автор пакета, чтобы сохранить этот список актуальный, когда новая версия пакет выпущен. Авторы пакета может также принять решение не поддерживать его, если они не видят смысла в импорте * из их пакета.

7
ответ дан 28 November 2019 в 22:48
поделиться
Другие вопросы по тегам:

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