Maison >développement back-end >Tutoriel Python >Importer ou ne pas importer en haut : l'importation anticipée est-elle plus efficace que l'importation différée ?

Importer ou ne pas importer en haut : l'importation anticipée est-elle plus efficace que l'importation différée ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-08 06:35:13428parcourir

To Import or Not to Import at the Top: Is Early Importing More Efficient Than Deferred Importing?

Instructions d'importation : haut ou bas ?

PEP 8 impose que les instructions d'importation résident en haut d'un module, laissant certains s'interroger sur l'efficacité de l'importation de classes inutilisées ou fonctionne très tôt. Une comparaison s'impose :

class SomeClass(object):

    def not_often_called(self):
        from datetime import datetime
        self.datetime = datetime.now()

versus

from datetime import datetime

class SomeClass(object):

    def not_often_called(self):
        self.datetime = datetime.now()

Les importations différées sont-elles plus efficaces que les importations initiales ?

Bien que l'importation de modules soit rapide, cela entraîne un coût. En plaçant les importations au début du module, cette dépense insignifiante est payée une seule fois. Cependant, confiner les importations à l'intérieur des fonctions prolonge leur durée d'exécution à chaque appel de fonction.

Par conséquent, pour une efficacité optimale, gardez les importations au premier plan. N'envisagez les importations différées que si le profilage révèle un goulot d'étranglement en termes de performances.

Au-delà de l'efficacité, d'autres justifications pour les importations paresseuses incluent :

  • Prise en charge facultative des bibliothèques : Empêchez les cassures de code lorsque les bibliothèques facultatives sont absentes.
  • Plugin initialisation : Les importations dans les fichiers d'initialisation du plugin permettent le chargement du module sans utilisation. Des exemples existent dans les plugins Bazaar utilisant le mécanisme de chargement paresseux de bzrlib.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn