PEP 8 говорит:
- Импорты всегда помещаются в начало файла сразу после комментариев и строк документации, а также перед глобальными переменными и константами модуля.
Иногда я нарушаю PEP 8. Иногда я импортирую что-то внутри функций. Как правило, я делаю это, если есть импорт, который используется только в одной функции.
Есть мнения?
ИЗМЕНИТЬ (причина, по которой я считаю, что импорт функций может быть хорошей идеей):
Основная причина: это может сделать код более понятным.
- Глядя на код функции, я могу спросить себя: «Что такое функция / класс xxx?» (xxx используется внутри функции). Если у меня есть весь мой импорт в верхней части модуля, я должен пойти посмотреть туда, чтобы определить, что такое xxx. Это больше проблема при использовании
from m import xxx
. Видетьm.xxx
в функции, вероятно, говорит мне больше. В зависимости от того, что такоеm
: это хорошо известный модуль / пакет верхнего уровня (import m
)? Или это подмодуль / пакет (from a.b.c import m
)? - В некоторых случаях наличие этой дополнительной информации («Что такое xxx?») Рядом с тем, где используется xxx, может облегчить понимание функции.
https://docs.python.org/3/reference/import.html#loaders
: Если модуль является модулем Python ... загрузчик должен выполнить код модуля в глобальном пространстве имен модуля ... - person noobninja   schedule 05.06.2020if-elif
для выбора одной из нескольких моделей. - person Mohd   schedule 02.10.2020