Heim > Backend-Entwicklung > Python-Tutorial > Wie können zirkuläre Importe in Python gelöst und vermieden werden?

Wie können zirkuläre Importe in Python gelöst und vermieden werden?

Barbara Streisand
Freigeben: 2024-12-18 03:03:11
Original
242 Leute haben es durchsucht

How Can Circular Imports in Python Be Resolved and Avoided?

Zirkuläre Importe in Python

Zirkuläre Importe treten auf, wenn mehrere Module versuchen, sich gegenseitig zu importieren, wodurch eine zyklische Abhängigkeit entsteht. Das Verständnis des Verhaltens von zirkulären Importen ist für Python-Programmierer von entscheidender Bedeutung.

Auswirkungen von zirkulären Importen

Wenn zwei Module sich direkt gegenseitig importieren, z. B. import foo in bar.py und import bar in foo.py, der Import gelingt ohne Probleme. Beim Versuch, bestimmte Attribute oder Submodule innerhalb eines zirkulären Imports zu importieren, treten jedoch Probleme auf.

Stellen Sie sich das folgende Szenario vor:

# module foo.py
from bar import xyz

# module bar.py
from foo import abc
Nach dem Login kopieren

In diesem Fall erfordert jedes Modul, dass das andere zuvor importiert wird Es kann auf das spezifische Attribut oder Submodul zugreifen. Dies führt zu einem Importfehler, da Python nicht bestimmen kann, welches Modul zuerst im Zyklus importiert werden soll.

Zirkuläre Importe in Python funktionieren

Trotz der möglichen Probleme gibt es Es gibt bestimmte Szenarien, in denen bei zirkulären Importen möglicherweise keine Fehler auftreten:

  • Importieren von Modulen oben im Datei: Wenn beide Module auf der obersten Ebene importiert werden, ohne bestimmte Attribute oder Untermodule zu verwenden, funktioniert es sowohl in Python 2 als auch in Python 3.
  • Importieren aus einer Funktion heraus mit from: Wenn die spezifischen Attribute oder Submodule aus einer Funktion mithilfe von from importiert werden, funktioniert dies sowohl in Python 2 als auch in Python 3.
  • Paketattribute anstelle von Modulen importieren: Wenn anstelle des Imports von bar das spezifische Attribut xyz aus dem bar-Paket mithilfe von „from bar import xyz“ importiert wird, funktionieren zirkuläre Importe möglicherweise weiterhin.

Beispiele

Der folgende Python-Code demonstriert die Funktionsweise zirkulärer Importe in verschiedene Szenarien:

Beispiel 1 (nur Python 3)

# lib/foo.py
from . import bar

def abc():
    print(bar.xyz.__name__)

# lib/bar.py
from . import foo

def xyz():
    print(foo.abc.__name__)
Nach dem Login kopieren

Beispiel 2 (nur Python 2)

# lib/foo.py
import bar

def abc():
    print(bar.xyz.__name__)

# lib/bar.py
import foo

def xyz():
    print(foo.abc.__name__)
Nach dem Login kopieren

Beispiel 3

# lib/foo.py
from lib.bar import xyz

# lib/bar.py
from lib.foo import abc
Nach dem Login kopieren

Fazit

Während zirkuläre Importe zu Fehlern führen können, ist es wichtig, dass Python sie verarbeitet. Durch Befolgen der oben aufgeführten Richtlinien können Programmierer Importfehler vermeiden und das korrekte Verhalten ihrer Python-Programme sicherstellen.

Das obige ist der detaillierte Inhalt vonWie können zirkuläre Importe in Python gelöst und vermieden werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage