PEP 8 говорить:
- Імпорт завжди розміщується у верхній частині файлу, одразу після будь-яких коментарів модулів та доктрингів, а також перед глобальними модулями та константами.
За професією я порушую PEP 8. Деколи я імпортую речі всередині функцій. Як правило, я це роблю, якщо є імпорт, який використовується лише в межах однієї функції.
Будь-які думки?
EDIT (причина, по якій я відчуваю імпорт у функції, може бути хорошою ідеєю):
Основна причина: Це може зробити код яснішим.
- Дивлячись на код функції, я можу запитати себе: "Що таке функція / клас xxx?" (xxx використовується у межах функції). Якщо у мене весь імпорт у верхній частині модуля, я мушу піти туди, щоб визначити, що таке ххх. Це більше питання при використанні
from m import xxx
. Бачитиm.xxx
у функції, ймовірно, мені більше розповідає. Залежно від того, щоm
таке: чи це відомий модуль / пакет верхнього рівня (import m
)? Або це підмодуль / пакет (from a.b.c import m
)? - У деяких випадках наявність додаткової інформації ("Що таке ххх?") Близько до того, де використовується ххх, може полегшити розуміння функції.