Heim > Backend-Entwicklung > Python-Tutorial > Wie können zirkuläre Importe in Python vermieden werden und welche Konsequenzen haben sie?

Wie können zirkuläre Importe in Python vermieden werden und welche Konsequenzen haben sie?

Susan Sarandon
Freigeben: 2024-12-18 05:44:14
Original
806 Leute haben es durchsucht

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

Folgen zirkulärer Importe in Python

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.

Problem: Direkte zirkuläre Importe

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
Nach dem Login kopieren

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.

Lösung: Indirekte zirkuläre Importe

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
Nach dem Login kopieren

Dieser Ansatz ermöglicht es beiden Modulen, die erforderlichen Attribute zu importieren, ohne dass sie vollständig geladen werden müssen.

Ausnahme: Python 2 und spezifische Szenarien

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.

Zusätzliche Beispiele

Die folgenden Beispiele veranschaulichen zusätzliche Szenarios, in denen zirkuläre Importe in Python zulässig sind:

  • Unten im Modul, Importattribut, nicht Modul; „from“-Import
  • Top of function; „from“-Import
  • Oben im Modul; „von“ Import okay; relativ okay; Nur Python 3

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!

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