Zirkuläre Importe entstehen, wenn zwei oder mehr Module versuchen, sich gegenseitig zu importieren. Während einfache Importe möglicherweise reibungslos funktionieren, treten Probleme auf, wenn ein Modul versucht, bestimmte Namen oder Attribute von einem anderen Modul zu importieren, das ebenfalls versucht, daraus zu importieren.
Direkt Bei zirkulären Importen versuchen Module, sich mithilfe direkter Importanweisungen gegenseitig als Ganzes zu importieren. Zum Beispiel:
# foo.py import bar # bar.py import foo
Anfangs werden beide Module ohne Probleme geladen. Wenn jedoch ein Modul versucht, auf einen Namen zuzugreifen, der das vollständige Laden des anderen Moduls erfordert, kann ein Laufzeitfehler auftreten.
Um den Laufzeitfehler zu vermeiden, verwenden Sie Indirekte Importe, bei denen Module Attribute oder bestimmte Namen importieren und nicht das gesamte Modul. Zum Beispiel:
# foo.py from bar import xyz # bar.py from foo import abc
Dieser Ansatz ermöglicht es beiden Modulen, die erforderlichen Attribute zu importieren, ohne dass sie vollständig geladen werden müssen.
Python 2 zeigt ein leicht unterschiedliches Verhalten bei zirkulären Importen. In bestimmten spezifischen Szenarien, wie z. B. beim Importieren vom Anfang eines Moduls, ohne Verwendung von „von“ und nur mit relativen Importen, funktionieren zirkuläre Importe möglicherweise in Python 2, aber nicht in Python 3.
Die folgenden Beispiele veranschaulichen zusätzliche Szenarios, in denen zirkuläre Importe in Python zulässig sind:
Das obige ist der detaillierte Inhalt vonWie können zirkuläre Importe in Python vermieden werden und welche Konsequenzen haben sie?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!