Heim >Backend-Entwicklung >Python-Tutorial >Wie können zirkuläre Importe in Python vermieden oder verwaltet werden?

Wie können zirkuläre Importe in Python vermieden oder verwaltet werden?

DDD
DDDOriginal
2024-12-20 02:32:09280Durchsuche

How Can Circular Imports in Python Be Avoided or Managed?

Probleme mit gegenseitigen oder zirkulären Importen

Wenn zwei Module in Python versuchen, sich gegenseitig zu importieren, wäre ein scheinbar erwartetes Ergebnis ein erfolgreicher Import . Szenarien, in denen mehrere Module zyklische Importversuche durchführen, stellen jedoch Komplikationen dar.

Direkt im Vergleich zu Aus-Importen

Wenn ein direkter Import versucht wird (z. B. foo in bar importieren). py und import bar in foo.py), wird der Import normalerweise erfolgreich ausgeführt. Beide Module werden geladen und mit Referenzen zueinander eingerichtet, wenn die Codeausführung beginnt.

Das Problem tritt auf, wenn „von“-Importe verwendet werden (z. B. from foo import abc und from bar import xyz). In diesen Fällen erfordert jedes Modul, dass das andere bereits importiert wurde, bevor sein eigenes Modul importiert werden kann. Dadurch entsteht ein Deadlock.

Funktionieren von Zirkelimporten in Python

Trotz der Möglichkeit von Zirkelimportproblemen gibt es Fälle, in denen sie keine Probleme verursachen. Beispiele aus bestimmten Python-Versionen sind:

  • Python 2: Direkte Importe oben in Modulen
  • Python 3:

    • Direkte Importe oder relative „von“-Importe oben Module
    • Direkte Importe oder nicht relative „von“-Importe mit explizit importierten Attributen am Ende der Module

Zusätzliche Überlegungen

Star-Importe (z. B. von foo import *) können weitere Komplikationen mit sich bringen, die in den bereitgestellten Referenzen nicht behandelt werden unten.

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

Stellungnahme:
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