PEP 8 dit:
- Les importations sont toujours placées en haut du fichier, juste après les commentaires et les docstrings du module, et avant les globales et les constantes du module.
À l'occasion, je viole PEP 8. Parfois, j'importe des trucs à l'intérieur de fonctions. En règle générale, je fais cela s'il y a une importation qui n'est utilisée que dans une seule fonction.
Des opinions?
EDIT (la raison pour laquelle j'ai l'impression d'importer des fonctions peut être une bonne idée):
Raison principale: cela peut rendre le code plus clair.
- En regardant le code d'une fonction, je pourrais me demander: "Qu'est-ce qu'une fonction / classe xxx?" (xxx étant utilisé dans la fonction). Si j'ai toutes mes importations en haut du module, je dois y aller pour déterminer ce qu'est xxx. C'est plus un problème lors de l'utilisation
from m import xxx
. Voirm.xxx
dans la fonction m'en dit probablement plus. Selon ce quim
est: S'agit-il d'un module / package de premier niveau bien connu (import m
)? Ou est-ce un sous-module / package (from a.b.c import m
)? - Dans certains cas, avoir ces informations supplémentaires ("Qu'est-ce que xxx?") À proximité de l'endroit où xxx est utilisé peut rendre la fonction plus facile à comprendre.