Maison >développement back-end >Tutoriel Python >Comment les importations circulaires en Python peuvent-elles être évitées ou gérées ?

Comment les importations circulaires en Python peuvent-elles être évitées ou gérées ?

DDD
DDDoriginal
2024-12-20 02:32:09238parcourir

How Can Circular Imports in Python Be Avoided or Managed?

Problèmes liés aux importations mutuelles ou circulaires

Lorsque deux modules Python tentent de s'importer l'un l'autre, le résultat apparemment attendu serait une importation réussie . Cependant, les scénarios dans lesquels plusieurs modules s'engagent dans des tentatives d'importation cycliques présentent des complications.

Importations directes ou à partir de

Si une importation directe est tentée (par exemple, import foo in bar. py et la barre d'importation dans foo.py), l'importation s'exécutera généralement avec succès. Les deux modules seront chargés et établis avec des références l'un à l'autre au début de l'exécution du time code.

Le problème survient lorsque des importations "from" sont utilisées (par exemple, from foo import abc et from bar import xyz). Dans ces cas, chaque module nécessite la présence de l'autre pour avoir déjà été importé avant sa propre importation. Cela crée une impasse.

Travailler sur les importations circulaires en Python

Malgré le potentiel de problèmes d'importation circulaire, il existe des cas où ils ne posent pas de problèmes. Des exemples de versions spécifiques de Python incluent :

  • Python 2 : Importations directes en haut des modules
  • Python 3 :

    • Importations directes ou importations relatives "depuis" en haut de modules
    • Importations directes ou importations "depuis" non relatives avec des attributs explicitement importés au bas des modules

Considérations supplémentaires

Les importations en étoile (par exemple, depuis foo import *) peuvent introduire d'autres complications qui ne sont pas couvertes dans les références fournies ci-dessous.

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