Maison > développement back-end > Tutoriel Python > 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
Libérer: 2024-11-02 12:17:30
original
945 Les gens l'ont consulté

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
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal