Heim >Backend-Entwicklung >Python-Tutorial >Wie haben sich Importanweisungen in Python 3 geändert?

Wie haben sich Importanweisungen in Python 3 geändert?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-02 07:26:10213Durchsuche

How Have Import Statements Changed in Python 3?

Änderungen in der Importanweisung in Python 3

In Python 3 wurde der Importmechanismus erheblich überarbeitet und neue Regeln für relative Importe eingeführt Beschränkung von Star-Importen.

Was ist ein Verwandter? Importieren?

Ein relativer Import ist eine Importanweisung, die sich auf ein Modul oder Paket relativ zum Speicherort des aktuellen Moduls im Dateisystem bezieht. Betrachten Sie beispielsweise die folgende Dateistruktur:

mypkg/
  __init__.py
  module1.py
  module2.py

In module2.py wäre die Anweisung von module1 import Foo ein relativer Import, da sie die Foo-Klasse aus dem Geschwistermodul module1 importiert.

Explizite relative Importe

Python 3 erfordert explizite relative Importe, die klar spezifizieren Speicherort des importierten Moduls. Der führende Punkt („") in einer Importanweisung weist auf einen relativen Import hin. Beispielsweise importiert import Foo aus .module1 Foo aus dem relativen Modul module1.

Entfernung impliziter relativer Importe

In Python 2 waren implizite relative Importe für Module zulässig importiert werden, ohne ihren Speicherort explizit anzugeben. Dieses Verhalten ist jedoch in Python 3 veraltet. Beispielsweise würde die Anweisung import module1 in Python 2 implizit module1.py aus dem aktuellen Verzeichnis importieren. In Python 3 würde diese Anweisung jedoch einen Fehler auslösen und einen expliziten Import mit from erfordern. import module1.

Star-Importe

Star-Importe (z. B. from x import *) sind in Python 3 nur im Code auf Modulebene zulässig. Dies bedeutet, dass Module nicht verwendet werden können Sternimporte beim Importieren anderer Module.

Beispiel für die Verwendung von Relative Importe

Bedenken Sie den folgenden Python 2-Code:

# module1.py
class MyClass:
    def __init__(self):
        print("Hello from MyClass")
# module2.py
from module1 import MyClass

In Python 3 müsste module2.py wie folgt umgeschrieben werden:

# module2.py
from .module1 import MyClass

Dieser explizite relative Import stellt sicher, dass MyClass vom richtigen Speicherort relativ zu Modul2 importiert wird.

Das obige ist der detaillierte Inhalt vonWie haben sich Importanweisungen in Python 3 geändert?. 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