Maison >développement back-end >Tutoriel Python >Comment éviter les importations circulaires en Python et quelles sont leurs conséquences ?

Comment éviter les importations circulaires en Python et quelles sont leurs conséquences ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-18 05:44:14809parcourir

How Can Circular Imports in Python Be Avoided and What Are Their Consequences?

Conséquences des importations circulaires en Python

Les importations circulaires surviennent lorsque deux modules ou plus tentent de s'importer les uns les autres. Bien que de simples importations puissent fonctionner correctement, des problèmes surviennent lorsqu'un module tente d'importer des noms ou des attributs spécifiques à partir d'un autre module qui tente également d'importer à partir de celui-ci.

Problème : importations circulaires directes

En direct Lors des importations circulaires, les modules tentent de s'importer les uns les autres dans leur ensemble à l'aide d'instructions d'importation directe. Par exemple :

# foo.py
import bar

# bar.py
import foo

Initialement, les deux modules se chargent sans problème. Cependant, si un module tente d'accéder à un nom qui nécessite que l'autre module soit complètement chargé, une erreur d'exécution peut se produire.

Solution : importations circulaires indirectes

Pour éviter l'erreur d'exécution, utilisez importations indirectes, où les modules importent des attributs ou des noms spécifiques plutôt que le module entier. Par exemple :

# foo.py
from bar import xyz

# bar.py
from foo import abc

Cette approche permet aux deux modules d'importer les attributs nécessaires sans nécessiter qu'ils soient complètement chargés.

Exception : Python 2 et scénarios spécifiques

Python 2 présente un comportement légèrement différent concernant les importations circulaires. Dans certains scénarios spécifiques, tels que l'importation depuis le haut d'un module, sans utiliser « from » et en utilisant uniquement des importations relatives, les importations circulaires peuvent fonctionner dans Python 2 mais pas dans Python 3.

Exemples supplémentaires

Les exemples suivants illustrent des scénarios supplémentaires dans lesquels les importations circulaires sont autorisées en Python :

  • Bas du module, attribut d'importation, pas module ; "from" import
  • Haut de fonction ; "from" import
  • Haut du module ; "de" importer ok ; relativement bien; Python 3 uniquement

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