Я могу использовать __ init __. py для определения глобальных переменных?

JMeter был бы одним таким инструментом. Может быть немного твердо изучить и настроить, но это обычно стоит того.

115
задан pmav99 8 November 2012 в 15:59
поделиться

3 ответа

Вы можете поместить их в __ init __. Py . Это происходит постоянно.

mypackage / __ init __. Py :

MY_CONSTANT = 42

mypackage / mymodule.py :

from mypackage import MY_CONSTANT
print "my constant is", MY_CONSTANT

Затем импортируйте mymodule:

>>> from mypackage import mymodule
my constant is 42

Тем не менее, если у вас есть константы, было бы разумно (возможно, лучше всего) поместить их в отдельный модуль (constants.py, config.py, ...), а затем, если вы хотите, чтобы они были в пространстве имен пакета, импортируйте их.

mypackage / __ init__ .py :

from mypackage.constants import *

Тем не менее, это автоматически не включает константы в пространствах имен модулей пакета. Каждый из модулей в пакете по-прежнему должен будет явно импортировать константы либо из mypackage , либо из mypackage.constants .

.
177
ответ дан 24 November 2019 в 02:26
поделиться

Вы можете определять глобальные переменные откуда угодно, но это действительно плохая идея. импортируйте модуль __ builtin __ и измените или добавьте атрибуты к этим модулям, и вдруг у вас появятся новые встроенные константы или функции. Фактически, когда мое приложение устанавливает gettext, я получаю функцию _ () во всех своих модулях, ничего не импортируя. Так что это возможно, но, конечно, только для проектов типа приложений, а не для повторно используемых пакетов или модулей.

И я думаю, что никто не будет рекомендовать эту практику в любом случае. Что не так с пространством имен? В указанном приложении есть модуль версии, поэтому у меня есть «глобальные» переменные, такие как version.VERSION , version.PACKAGE_NAME и т. Д.

2
ответ дан 24 November 2019 в 02:26
поделиться

Вы не можете этого сделать. Вам придется явно импортировать ваши константы в пространство имен каждого отдельного модуля. Лучший способ добиться этого - определить ваши константы в модуле «config» и импортировать их везде, где вам это нужно:

# mypackage/config.py
MY_CONST = 17

# mypackage/main.py
from mypackage.config import *
30
ответ дан 24 November 2019 в 02:26
поделиться
Другие вопросы по тегам:

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