PEP 8 dice:
- Le importazioni vengono sempre messe all'inizio del file, subito dopo ogni commento del modulo e docstring e prima delle variabili globali e delle costanti del modulo.
Di tanto in tanto, violo PEP 8. A volte importa cose all'interno di functions. Come regola generale, lo faccio se c'è un'importazione che viene utilizzata solo all'interno di una singola funzione.
Qualche opinione?
MODIFICA (il motivo per cui mi sento di importare in functions può essere una buona idea):
Motivo principale: può rendere il codice più chiaro.
- Quando guardo il codice di una funzione potrei chiedermi: "Cos'è la funzione / classe xxx?" (xxx utilizzato all'interno della funzione). Se ho tutte le mie importazioni nella parte superiore del modulo, devo andare lì per determinare cosa sia xxx. Questo è più un problema quando si utilizza
from m import xxx
. Vederem.xxx
nella funzione probabilmente mi dice di più. A seconda di cosa sim
tratta: è un noto modulo / pacchetto di primo livello (import m
)? O è un sottomodulo / pacchetto (from a.b.c import m
)? - In alcuni casi, avere queste informazioni extra ("Che cos'è xxx?") Vicino a dove viene utilizzato xxx può rendere la funzione più facile da capire.