Was ist in einem (Pythons) __name__?

Eine Einführung in die Variable _ _name_ _ und ihre Verwendung in Python

Sie haben die __name__Variable höchstwahrscheinlich gesehen , als Sie Python-Code durchlaufen haben. Unten sehen Sie einen Beispielcode-Ausschnitt, wie er aussehen könnte:

if __name__ == '__main__': main()

In diesem Artikel möchte ich Ihnen zeigen, wie Sie diese Variable zum Erstellen von Modulen in Python verwenden können.

Warum wird die Variable _ _name_ _ verwendet?

Die __name__Variable (zwei Unterstriche davor und danach) ist eine spezielle Python-Variable. Der Wert hängt davon ab, wie wir das enthaltene Skript ausführen.

Manchmal schreiben Sie ein Skript mit Funktionen, die auch in anderen Skripten nützlich sein können. In Python können Sie dieses Skript als Modul in ein anderes Skript importieren.

Dank dieser speziellen Variablen können Sie entscheiden, ob Sie das Skript ausführen möchten. Oder dass Sie die im Skript definierten Funktionen importieren möchten.

Welche Werte kann die Variable __name__ enthalten?

Wenn Sie Ihr Skript ausführen, ist die __name__Variable gleich __main__. Wenn Sie das enthaltene Skript importieren, enthält es den Namen des Skripts.

Schauen wir uns diese beiden Anwendungsfälle an und beschreiben den Prozess anhand von zwei Abbildungen.

Szenario 1 - Führen Sie das Skript aus

Angenommen, wir haben das Skript geschriebennameScript.py wie folgt:

def myFunction(): print 'The value of __name__ is ' + __name__
def main(): myFunction()
if __name__ == '__main__': main()

Wenn Sie nameScript.py ausführen, wird der folgende Prozess ausgeführt.

Bevor der gesamte andere Code ausgeführt wird, wird die __name__Variable auf __main__ gesetzt. Danach diemainund myFunctiondef-Anweisungen werden ausgeführt. Da die Bedingung als wahr ausgewertet wird, wird die Hauptfunktion aufgerufen. Dies ruft wiederum myFunction auf. Dies druckt den Wert von aus __main__.

Szenario 2 - Importieren Sie das Skript in ein anderes Skript

Wenn wir myFunction beispielsweise in einem anderen Skript wiederverwenden möchten importingScript.py, können wir es nameScript.pyals Modul importieren .

Der Code in importingScript.pykönnte wie folgt sein:

import nameScript as ns
ns.myFunction()

Wir haben dann zwei Bereiche: einen importingScriptund den zweiten Bereich von nameScript. In der Abbildung sehen Sie, wie es sich vom ersten Anwendungsfall unterscheidet.

Beim Importieren __name__von Script.py wird die Variable auf __main__ gesetzt. Durch den Import von nameScript sucht Python nach einer Datei, indem .pyes den Modulnamen hinzufügt . Anschließend wird der in der importierten Datei enthaltene Code ausgeführt.

Aber diesmal ist es soist auf nameScript eingestellt. Wieder werden die def-Anweisungen für main und myFunction ausgeführt. Jetzt wird die Bedingung jedoch als falsch ausgewertet und main wird nicht aufgerufen.

Beim Importieren von Script.py rufen wir myFunction auf, das nameScript ausgibt. NameScript ist myFunction bekannt, als diese Funktion definiert wurde.

Wenn Sie im importingScript drucken würden __name__, würde dies ausgegeben __main__. Der Grund dafür ist, dass Python den im Bereich des Importierens von Skript bekannten Wert verwendet.

Fazit

In diesem kurzen Artikel habe ich erklärt, wie Sie die __name__Variable zum Schreiben von Modulen verwenden können. Sie können diese Module auch einzeln ausführen. Dies kann erreicht werden, indem verwendet wird, wie sich die Werte dieser Variablen abhängig davon ändern, wo sie auftreten.