PEP 8 говорит:
- Импорт всегда помещается в верхнюю часть файла сразу после любого модуля комментарии и docstrings, а также перед модульными глобалями и константами.
В то время я нарушаю PEP 8. Несколько раз я импортирую материал внутри функций. Как правило, я делаю это, если есть импорт, который используется только в одной функции.
Любые мнения?
EDIT (причина, по которой я чувствую, что импорт в функции может быть хорошей идеей):
Основная причина: он может сделать код более понятным.
- При просмотре кода функции я могу спросить себя: "Что такое function/class xxx?" (xxx используется внутри функции). Если у меня есть весь мой импорт в верхней части модуля, я должен посмотреть туда, чтобы определить, что такое xxx. Это больше проблема при использовании
from m import xxx
. Видетьm.xxx
в функции, вероятно, говорит мне больше. В зависимости от того, чтоm
: Это хорошо известный модуль/пакет верхнего уровня (import m
)? Или это подмодуль/пакет (from a.b.c import m
)? - В некоторых случаях наличие этой дополнительной информации ( "Что такое xxx?" ) близко к тому, где используется xxx, может облегчить понимание функции.