PEP 8 говорит:
- Импорты всегда помещаются в начало файла, сразу после любых комментариев и строк документации, а также перед глобальными переменными и константами модуля.
Иногда я нарушаю PEP 8. Иногда я импортирую что-то внутри функций. Как правило, я делаю это, если есть импорт, который используется только в одной функции.
Есть мнения?
ИЗМЕНИТЬ (причина, по которой я считаю, что импорт функций может быть хорошей идеей):
Основная причина: это может сделать код более понятным.
- Глядя на код функции, я могу спросить себя: «Что такое функция / класс xxx?» (xxx используется внутри функции). Если у меня есть весь мой импорт в верхней части модуля, я должен пойти посмотреть туда, чтобы определить, что такое xxx. Это больше проблема при использовании
from m import xxx
. Просмотрm.xxx
функции, вероятно, говорит мне больше. В зависимости от того, чтоm
это: хорошо известный модуль верхнего уровня / package (import m
)? Или это подмодуль / пакет (from a.b.c import m
)? - В некоторых случаях наличие этой дополнительной информации («Что такое xxx?») Рядом с тем, где используется xxx, может облегчить понимание функции.