Ответ 1
Если вам действительно нужно много функций, вы уже загрязняете свое пространство имен.
Я бы предложил:
import my_module
Или, если my_module имеет длинное имя, используйте псевдоним:
import my_long_module as m
Я импортирую много функций из модуля
Лучше ли использовать
from my_module import function1, function2, function3, function4, function5, function6, function7
который немного запутан, но позволяет избежать наводнения текущего пространства имен всем, что от этого модуля, или
from my_module import *
Что выглядит аккуратно, но заполнит пространство имен всем, что из этого модуля.
Невозможно найти что-либо в PEP8 о том, какой предел для того, сколько вы должны импортировать по имени. Что лучше и почему?
Если вам действительно нужно много функций, вы уже загрязняете свое пространство имен.
Я бы предложил:
import my_module
Или, если my_module имеет длинное имя, используйте псевдоним:
import my_long_module as m
Если это между тем или другим, используйте
from my_module import function1, function2, function3, function4, function5, function6, function7
См. "Явное лучше, чем неявное". в import this
.
Если вам просто требуется более короткое имя, чем my_module.function1
, всегда есть import my_module as mod
.
Для нескольких функций, которые вы используете много раз (либо много раз, чтобы получить короткое имя, либо в цикле, так что скорость доступа важна), есть
func1 = my_module.function1
С небольшим количеством управления вы можете контролировать импорт импорта *. Скажем, у вашего my_module есть функция1..функция8, но вы хотите только сделать доступными функции с 1 по 6. В своем my_module переназначьте атрибут __all__
:
my_module.py
__all__ = ['function1', 'function2', 'function3' ...]
def function1():
...
# etc...
Теперь, если вы используете from my_module import *
, вы импортируете только те функции и переменные, которые вы определили в атрибуте __all__
, из my_module.py.
Я предлагаю вам решить проблему, разделив ваш модуль, соответствующим образом группируя функции и помещая их в отдельные модули.
Подход псевдонимов Kugel тоже хорош, хотя я бы не стал использовать псевдоним типа "m".: О)