PEP 8 dit :
- Les importations sont toujours placées en tête de fichier, juste après les modules. et la documentation, et avant les globales et constantes du module.
Il m'arrive de violer le PEP 8. Parfois, j'importe des éléments à l'intérieur de fonctions. En règle générale, je le fais si une importation n'est utilisée qu'au sein d'une seule fonction.
Des avis ?
EDIT (la raison pour laquelle je pense que l'importation dans les fonctions peut être une bonne idée) :
Principale raison : cela peut rendre le code plus clair.
- Lorsque je regarde le code d'une fonction, je peux me demander : "Qu'est-ce que la fonction/classe xxx ?" (xxx étant utilisé à l'intérieur de la fonction). Si tous mes imports se trouvent en haut du module, je dois aller voir là pour déterminer ce qu'est xxx. Le problème se pose davantage lorsque l'on utilise
from m import xxx
. Voirm.xxx
dans la fonction m'en dit probablement plus. En fonction de ce quem
est : S'agit-il d'un module/paquet de premier niveau bien connu (import m
) ? Ou s'agit-il d'un sous-module/paquet (from a.b.c import m
) ? - Dans certains cas, le fait de disposer de cette information supplémentaire ("Qu'est-ce que xxx ?") à proximité de l'endroit où xxx est utilisé peut faciliter la compréhension de la fonction.