O PEP 8 diz:
- As importações são sempre colocadas na parte superior do arquivo, logo após qualquer comentário e documentação do módulo, e antes das globais e constantes do módulo.
Na ocasião, violei o PEP 8. Algumas vezes, importo coisas dentro de funções. Como regra geral, faço isso se houver uma importação usada apenas em uma única função.
Alguma opinião?
EDIT (a razão pela qual sinto a importação de funções pode ser uma boa ideia):
Razão principal: pode tornar o código mais claro.
- Ao olhar para o código de uma função, eu poderia me perguntar: "O que é função / classe xxx?" (xxx sendo usado dentro da função). Se eu tiver todas as minhas importações na parte superior do módulo, preciso procurar lá para determinar o que é xxx. Este é mais um problema ao usar
from m import xxx
. Verm.xxx
na função provavelmente me diz mais. Dependendo do quem
é: É um módulo / pacote de nível superior bem conhecido (import m
)? Ou é um submódulo / pacote (from a.b.c import m
)? - Em alguns casos, ter essas informações extras ("O que é xxx?") Perto de onde xxx é usado pode facilitar a compreensão da função.