Sie müssen in Python auf das Konstrukt if __name__ == "main" gestoßen sein. Aber kennen Sie den genauen Zweck?

In einigen Programmiersprachen dient die Hauptmethode als einziger Einstiegspunkt für die Ausführung eines Programms. Beim Übergang von anderen Sprachen zu Python ist die Redewendung if __name__ == "__main__" scheint die gleiche Aufgabe zu erfüllen. In Python ist dies nicht der Fall.

Der if __name__ == "__main__" Idiom ermöglicht die Ausführung eines bestimmten Codes, wenn die Datei als Skript ausgeführt wird. Außerdem wird dadurch sichergestellt, dass nicht derselbe Code ausgeführt wird, wenn Sie die Datei als Modul importieren.

Das Verhalten der Variablen __name__ verstehen

Der __Name__ Variable ist in Python integriert. Es stellt den Namen des Moduls oder Skripts dar, in dem es verwendet wird. Wenn ein Skript als Hauptprogramm ausgeführt wird, wird sein Wert auf gesetzt __hauptsächlich__. Wenn Sie das Skript als Modul importieren, wird der Wert der Variablen auf den tatsächlichen Namen des Moduls gesetzt.

Das mag zunächst verwirrend sein, aber schauen Sie sich das folgende Beispiel an:

Erstellen Sie ein Skript und benennen Sie es Grüße.py. Dieses Skript enthält eine Funktion, die einen Benutzer begrüßt und den Wert ausgibt __Name__ Variable. Außerdem wird der Benutzer aufgefordert, seinen Namen einzugeben.

defgrüßen(Name):
drucken(f"Hallo, {Name}!")

drucken(„Wert von __name__:“, __Name__)

Wenn __name__ == "__hauptsächlich__":
Benutzername = Eingabe("Bitte geben Sie Ihren Namen ein: ")
grüße (Benutzername)
anders:
drucken(„Das Modul ‚Grüße‘ wurde importiert.“)

Ausführen der Grüße.py Das Skript zeigt die folgende Ausgabe an:

Der Wert der __Name__ Variable gibt zurück als __hauptsächlich__ weil das Skript direkt ausgeführt wird.

Erstellen Sie nun ein weiteres Skript und benennen Sie es script2.py. Importieren Sie dann die Grüße Skript als Modul.

importieren Grüße

drucken(„Das Begrüßungsskript wird ausgeführt …“)
Grüße.greet(„Alice“)

Rufen Sie an grüßen Funktion aus dem Gruß Das Modul gibt die folgende Ausgabe aus.

Der Wert der __Name__ Variable ändert sich in den tatsächlichen Namen des importierten Moduls. In diesem Fall, Grüße.

Dieser Wert ist die Redewendung if __name__ == "__main__" sucht nach, um festzustellen, ob eine Datei als Skript ausgeführt oder als Modul importiert wird.

Wann sollte das Konstrukt if __name__ == "__main__" verwendet werden?

Sie können das hinzufügen if __name__ == "__main__" in einem beliebigen Skript konstruieren. Aber es gibt einige Szenarien, in denen der Einsatz am vorteilhaftesten sein kann. Mit dem einfachen Rechnerprogramm unten erfahren Sie mehr über diese Szenarien.

# Rechner.py

defhinzufügen(a, b):
zurückkehren a + b

defsubtrahieren(a, b):
zurückkehren a - b

defmultiplizieren(a, b):
zurückkehren a * b

defteilen(a, b):
Wenn b != 0:
zurückkehren a/b
anders:
zurückkehren„Fehler: Division durch Null!“

Wenn __name__ == "__hauptsächlich__":
drucken(„Willkommen beim Rechner!“)
drucken(„Wählen Sie eine Operation aus:“)
drucken("1. Hinzufügen")
drucken("2. Subtrahieren")
drucken("3. Multiplizieren")
drucken("4. Teilen")

choice = int (input(„Geben Sie Ihre Auswahl ein (1-4):“))

num1 = float (Eingabe(„Geben Sie die erste Zahl ein:“))
num2 = float (Eingabe(„Geben Sie die zweite Zahl ein:“))

Wenn Wahl == 1:
Ergebnis = add (num1, num2)
drucken(f"Die Summe von {num1} Und {num2} Ist: {Ergebnis}")
elif Wahl == 2:
Ergebnis = subtrahieren (num1, num2)
drucken(f"Der Unterschied zwischen {num1} Und {num2} Ist: {Ergebnis}")
elif Wahl == 3:
Ergebnis = multiplizieren (num1, num2)
drucken(f"Das Produkt von {num1} Und {num2} Ist: {Ergebnis}")
elif Wahl == 4:
Ergebnis = dividieren (num1, num2)
drucken(f"Die Aufteilung von {num1} von {num2} Ist: {Ergebnis}")
anders:
drucken(„Ungültige Auswahl!“)

Das erste Szenario besteht darin, dass Sie ein Skript unabhängig ausführen und bestimmte Aktionen ausführen möchten. Dadurch kann das Skript als eigenständiges Programm funktionieren. Der if __name__ == "__main__" Mit dem Konstrukt können Benutzer über die Befehlszeilenschnittstelle mit dem Taschenrechner interagieren. Dies gibt den Benutzern die Möglichkeit, die Funktionalität des Programms zu nutzen, ohne den zugrunde liegenden Code verstehen oder ändern zu müssen.

Es ist weiterhin möglich, das Programm ohne auszuführen if __name__ == "__main__" erstellen und das gleiche Ergebnis erzielen, aber Ihr Code würde die modulare Codeorganisation verlieren.

Das zweite Szenario ist, wenn Sie Ihr möchten Code, um einen modularen Aufbau zu haben. Dadurch können andere Programme Ihr Skript als Modul importieren und seine Funktionen nutzen, ohne unnötige Funktionalitäten auszulösen.

Im Falle des Taschenrechnerprogramms können andere Programme das importieren Taschenrechner Modul ohne Auslösen der CLI-Schnittstelle und Benutzereingabeaufforderungen. Dies gewährleistet die Wiederverwendbarkeit des Codes und den modularen Aufbau. Dadurch lässt sich der Rechner nahtlos in größere Anwendungen integrieren.

importieren Taschenrechner

# Nutzung der Funktionen aus dem Rechnermodul
result_add = Rechner.add(5, 3)
drucken(„Additionsergebnis:“, result_add)

result_subtract = Rechner.subtract(10, 4)
drucken(„Subtraktionsergebnis:“, result_subtract)

Das dritte Szenario ist, wenn Sie möchten Testen und debuggen Sie Ihr Python-Skript unabhängig von anderen Modulen oder Skripten, die es importieren könnten. Im Beispiel des Taschenrechners ist es einfacher, sich auf das Testen der Funktionalität des Taschenrechners zu konzentrieren, ohne dass es zu Störungen durch externen Code kommt.

importieren Taschenrechner

# Testen der Rechnerfunktionen
Wenn __name__ == "__hauptsächlich__":
# Testzusatz
Ergebnis = Rechner.add(5, 3)
drucken(„Additionsergebnis:“, Ergebnis)

# Subtraktion testen
Ergebnis = Rechner.subtrahieren(8, 4)
drucken(„Subtraktionsergebnis:“, Ergebnis)

# Multiplikation testen
Ergebnis = Rechner.multiply(2, 6)
drucken(„Multiplikationsergebnis:“, Ergebnis)

Der obige Code zeigt, wie Sie das Rechnerskript unabhängig debuggen können.

Wann ist es unnötig, das Konstrukt if __name__ == "__main__" zu verwenden?

Wie Sie in den obigen Szenarien gesehen haben, ist die Verwendung von if __name__ == "__main__" Das Konstrukt dient dazu, das Skript, das Sie als Hauptprogramm ausführen, und das Skript, das Sie als Modul importieren, zu unterscheiden. Es gibt jedoch Fälle, in denen die Verwendung unnötig ist.

Der erste Fall liegt vor, wenn Ihr Skript einfach ist und keine wiederverwendbaren Funktionen oder Module enthält und Sie es nicht für den Import beabsichtigen. In diesem Fall sollten Sie dieses Konstrukt weglassen, da bei der Ausführung das gesamte Skript ausgeführt wird. Dies ist häufig bei einmaligen Skripten der Fall, die einen bestimmten Zweck erfüllen und nicht für die Wiederverwendung oder den Import gedacht sind.

Der andere Fall ist, wenn Sie in einer interaktiven Python-Sitzung arbeiten, z. B. bei Verwendung des Jupyter-Notebooks. In einer interaktiven Sitzung geben Sie Code direkt in der Eingabeaufforderung oder in einer interaktiven Python-Shell ein und führen ihn aus. Wie zum Beispiel die Python REPL (Read-Eval-Print Loop). Dadurch können Sie mit Code experimentieren und kleine Snippets testen, sodass Sie sofort Ergebnisse erhalten.

In diesen interaktiven Umgebungen gilt das Konzept eines Skripts, das als Hauptprogramm ausgeführt oder als Modul importiert wird, nicht. Sie führen Codeausschnitte direkt aus, ohne dass ein herkömmlicher Skript-Einstiegspunkt erforderlich ist.

Wie wird man ein Meister in Python?

Um ein Meister einer beliebigen Programmiersprache zu werden, müssen Sie verstehen, wie die zugrunde liegenden Konzepte der Funktionen oder Tools funktionieren. Genauso wie Sie in diesem Artikel etwas über das Konstrukt if __name__ == "__main__" erfahren haben.

Wenn Sie die zugrunde liegenden Konzepte verstehen, wissen Sie genau, wie sich Ihr Programm verhält, wenn Sie sie verwenden. Es gibt keine Eile. Wenn Sie die Konzepte einzeln erlernen, können Sie tiefer in jedes einzelne Konzept eintauchen.