Referenzseite: [Einführung in Python] Was ist das wichtige "if name == '__ main__':" beim Umgang mit Modulen?
Wenn ich Python studiere und mir Beispielprogramme ansehe, sehe ich oft den Satz "if name == '__ main__':". Main ist für das Schreiben von Programmen in anderen Programmiersprachen wie C und Java unverzichtbar, aber im Fall von Python wird main beim Codieren normalerweise nicht verwendet.
Dieser Satz spielt jedoch eine wichtige Rolle bei der Arbeit mit Modulen in Python. Dieses Mal werde ich erklären, was dies "wenn name == '__ main__':" bedeutet.
Python-Code kann als Skriptdatei gespeichert und von anderen Programmen wiederverwendet werden. Diese Datei wird als Modul bezeichnet. "Importieren" wird beim Laden einer Standardbibliothek in Python verwendet. Wenn Sie jedoch ein Modul laden, das Sie mit import erstellt haben, können Sie die in diesem Modul definierten Funktionen und Klassen auch in anderen Programmen verwenden.
Nachdem Sie nun wissen, was das Modul bedeutet, sprechen wir über die Variable "name". Angenommen, Sie haben das folgende Programm test.py.
test.py
def test():
print('Hello World!')
if __name__ == '__main__':
test()
Das Ergebnis der Ausführung dieses Programms ist wie folgt.
Hello World!
In diesem Beispiel haben wir gerade eine Funktion namens test definiert, die "Hello World!" Anzeigt. Ich habe die Variable "name" nirgendwo deklariert. Die Tatsache, dass test () ausgeführt wird, bedeutet jedoch, dass die if-Anweisung True zurückgibt. Was genau bedeutet das?
Schauen wir uns zuerst diese Variable mit dem Namen "name" an. Tatsächlich wird diese Variable name automatisch erstellt, wenn Sie ein Python-Skript auf einen Python-Drucker laden. Außerdem wird ihm automatisch der Modulname des laufenden Skripts zugewiesen.
Ich fand heraus, dass eine Variable namens name automatisch erstellt wurde und der Modulname des ausgeführten Skripts automatisch zugewiesen wurde. Ich kann mich jedoch nicht erinnern, ein Modul namens main erstellt zu haben. Woher kommt dieser main?
Wenn Sie ein Python-Skript direkt ausführen, wird die Skriptdatei als Modul mit dem Namen "main" erkannt. Wenn Sie die Skriptdatei direkt ausführen, wird der Variable name automatisch der Wert main zugewiesen.
Mit anderen Worten, die Bedeutung von "if name == '__ main__':" war "nur ausführen, wenn es direkt ausgeführt wird, und nicht anders ausführen". Im vorherigen Beispiel haben wir test.py direkt ausgeführt, sodass die if-Anweisung True zurückgab und test () ausgeführt wurde.
Als Test habe ich einen Prozess hinzugefügt, um den ausgeführten Modulnamen in test.py anzuzeigen.
def test():
print('Hello World!')
if __name__ == '__main__':
test()
print('Modulname:{}'.format(__name__)) #Zeigen Sie den Namen des ausgeführten Moduls an
Wenn Sie dies tun, erhalten Sie die folgenden Ergebnisse:
Hello World! Modulname: main
Wenn Sie die Skriptdatei direkt ausführen, sehen Sie, dass der Modulname "main" lautet.
Was bedeutet "außer wenn direkt ausgeführt"? In diesem Fall wird diese Skriptdatei als Modul aus einem anderen Programm gelesen. Ich habe test2.py erstellt, das test.py als Modul importiert.
test2.py
import test #test.Import py
Ausführungsergebnis
Modulname: Test
Wenn Sie test.py importieren und ausführen, sehen Sie, dass der Modulname "test" lautet. Das heißt, test.py wird als Testmodul ausgeführt, sodass name "test" zugewiesen wird. Daher gibt "if name == '__ main__':" False zurück, sodass test () nicht ausgeführt wurde.
"If name == '__ main__':" wird zum Testen beim Erstellen eines Moduls verwendet oder wenn Sie es derzeit nicht modularisieren möchten, aber unnötige Verarbeitung vermeiden möchten, wenn es modularisiert wird. Sie denken möglicherweise nicht an Modularisierung oder Wiederverwendung, während Sie ein Programm selbst erstellen, aber es ist eine wesentliche Idee, wenn Sie ein umfangreiches Programm erstellen. Erinnern wir uns daran.