Я обнаружил новый паттерн. Хорошо ли известен этот образец или каково его мнение?
По сути, мне трудно перебирать исходные файлы вверх и вниз, чтобы выяснить, какие модули импорта доступны и т. Д., Теперь вместо
import foo
from bar.baz import quux
def myFunction():
foo.this.that(quux)
Я перемещаю все свои операции импорта в функцию, в которой они фактически используются. Например:
def myFunction():
import foo
from bar.baz import quux
foo.this.that(quux)
Это делает несколько вещей. Во-первых, я редко случайно загрязняю свои модули содержимым других модулей. Я мог бы установить переменную __all__
для модуля, но тогда мне пришлось бы обновлять ее по мере развития модуля, и это не помогает загрязнению пространства имен для кода, который фактически живет в модуле.
Во-вторых, я редко сталкиваюсь со списком импортных товаров в верхней части моих модулей, половина или больше которых мне больше не нужны, потому что я реорганизовал их. Наконец, я нахожу этот шаблон НАМНОГО проще для чтения, поскольку каждое упомянутое имя находится прямо в теле функции.