Question

PEP 8 recommande que les modules d'importer au début des programmes.

Maintenant, je pense que l'importation certains d'entre eux au début du programme (à savoir, après if __name__ == '__main__') principal est logique. Par exemple, si le programme principal lit les arguments de la ligne de commande, je tends à faire import sys au début de la principale programme: cette façon, sys ne doit pas être importé lorsque le code est utilisé comme un module, car il n'y a pas besoin, dans ce cas, pour l'accès des arguments de ligne de commande.

Quelle est la gravité de cette infraction PEP 8? de faire ce que je devrais éviter? ou serait-il raisonnable de modifier PEP 8?

Était-ce utile?

La solution

Je ne peux pas vraiment vous dire à quel point cela est de faire.

Cependant, j'ai grandement amélioré leurs performances (temps de réponse, charge) pour une application Web en important certaines bibliothèques uniquement lors de la première utilisation.

BTW, ce qui suit est également de PEP 8:

  

Mais le plus important: savoir quand être   incompatibles - parfois le style   guide ne vient pas applicable. Quand à   doute, utilisez votre meilleur jugement. Regardez   à d'autres exemples et de décider   semble la meilleure. Et ne pas hésiter à   demandez!

Autres conseils

En général, je ne pense pas qu'il y ait beaucoup de mal à l'importation en retard pour les modules qui peuvent ne pas être nécessaires.

Cependant sys je serais certainement importer tôt, en haut. Il est un module commun qu'il est tout à fait probable que vous pouvez utiliser sys ailleurs dans votre script et ne pas remarquer qu'il est pas toujours importé. sys est également l'un des modules qui obtient toujours chargés par Python lui-même, de sorte que vous n'êtes pas enregistrer les temps de démarrage du module en évitant l'importation (pas qu'il ya beaucoup de démarrage pour sys de toute façon).

Je vous recommande de faire ce que vous ressentez est le plus approprié quand il n'y a rien dans le PEP au sujet de votre préoccupation.

Importation sys ne prend pas vraiment si longtemps que je vous en inquiéter. Certains modules ne prennent plus de temps cependant. Je ne pense pas vraiment sys obstrue l'espace de noms très bien. Je ne voudrais pas utiliser une variable appelée ou classe sys quel que soit.

Si vous pensez qu'il fait plus de mal que de bien l'avoir en haut, par tous les moyens le faire comme bon vous semble. PEP 8 est juste une ligne de guidage et beaucoup de code que vous voyez ne se conforme pas.

La question n'est pas la performance.

La question est claire.

Votre programme « principal » est seulement un programme principal aujourd'hui. Demain, il peut être une bibliothèque inclus dans certains programme principal de niveau supérieur. Plus tard, il sera juste un module dans un plus grand ensemble.

Depuis votre vie du programme « principal » peut changer, vous avez deux réponses.

  1. Isoler les choses à l'intérieur if __name__ == "__main__" "principales". Ce n'est pas une violation grotesque du PEP-8. Ceci est une façon raisonnable d'emballer les choses.

  2. Essayez de limiter le nombre de fonctionnalités dans vos scripts de programme « principaux ». Essayez de les garder jusqu'à imports et les trucs de if __name__ == "__main__". Si votre script principal est petit, votre question à l'importation va.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top