Maison  >  Article  >  développement back-end  >  Comment puis-je résoudre les dépendances d’importation circulaire en Python ?

Comment puis-je résoudre les dépendances d’importation circulaire en Python ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-02 12:17:30853parcourir

How Can I Resolve Circular Import Dependencies in Python?

Surmonter la dépendance à l'importation circulaire en Python

Lorsque vous rencontrez un programme Python qui échoue en raison d'une importation manquante lors de l'exécution, la cause première réside souvent dans une dépendance circulaire à l’importation. Cette situation se produit lorsque deux modules ou plus tentent de s'importer les uns les autres, conduisant à une boucle d'importation infinie.

Par exemple, considérons la structure de répertoires suivante :

a/
    __init__.py
    b/
        __init__.py
        c/
            __init__.py
            c_file.py
        d/
            __init__.py
            d_file.py

Dans ce scénario, le le fichier __init__.py d'un package importe le package c. Cependant, c_file.py dans le package c tente d'importer a.b.d, provoquant l'échec du programme puisque b n'existe pas à ce stade dans l'ordre d'importation.

Pour résoudre ce problème, on peut différer l'importation jusqu'à ce qu'il soit est véritablement nécessaire. Par exemple, dans a/__init__.py :

<code class="python">def my_function():
    from a.b.c import Blah
    return Blah()</code>

Cette approche retarde l'importation jusqu'à ce qu'elle soit essentielle, brisant ainsi la dépendance circulaire. Cependant, il est crucial d'examiner minutieusement les définitions et l'utilisation du package, car de telles dépendances peuvent indiquer des défauts de conception potentiels.

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