Oft in Python-Skripten gesehen,
pseudo.py
if __name__ == '__main__':
Ich wusste nicht was es war.
Ich habe dies als Referenz verwendet. http://programming-study.com/technology/python-if-main/
In Python ziehen Sie häufig etwas, das in anderen Skripten definiert ist, und verwenden es. Importieren Sie die Bibliothek. Dies ist auch nützlich, wenn Sie dies eventuell tun möchten (obwohl dies derzeit nicht möglich ist), indem Sie die von Ihnen definierte Funktion in ein anderes Skript einfügen und als Modul importieren.
\ _ \ _ Name \ _ \ _ oben ist eine Variable, die automatisch erstellt wird, wenn das Skript ausgeführt wird und wenn das Skript direkt ausgeführt wird. \ _ \ _ Name \ _ \ _ ist \ _ \ _ main \ _ Der Name \ _ wird gespeichert.
Mit anderen Worten, die obige if-Anweisung verzweigt sich abhängig davon, ob das Skript direkt von der Shell ausgeführt wurde.
Wie unten gezeigt, habe ich ein Skript geschrieben, das Ausführungsanweisungen innerhalb und außerhalb der if-Anweisung enthält.
name_is_main.py
def func(a,b):
return a + b
print('MY NAME IS ' + __name__)
if __name__ == '__main__':
print('hello!')
print(func(3,4))
Ausführungsergebnis: MY NAME IS __main__ hello! 7
name_is__not_main.py
import name_is_main as nim
print('my name is' + __name__)
if __name__ == '__main__':
print('world!')
print(nim.func(7,8))
Ausführungsergebnis: MY NAME IS name_is_main my name is __main__ world! 15
In name \ _is \ _main.py wurde \ _ \ _ main \ _ \ _ unverändert in \ _ \ _ name \ _ \ _ eingegeben, und der Inhalt der if-Anweisung wurde ebenfalls ausgeführt.
In name \ _is \ _ not \ _main.py wurde auch die print-Anweisung außerhalb der if-Anweisung des importierten Namens \ _is \ _main.py ausgeführt. Im importierten Namen \ _is \ _main.py wird der Skriptname \ _is \ _main in \ _ \ _ name \ _ \ _ gespeichert. Auf der anderen Seite wurde \ _ \ _ main \ _ \ _ in \ _ \ _ name \ _ \ _ of name \ _is \ _ not \ _main.py selbst gespeichert.
Wie oben erwähnt, wird das importierte Skript, wenn es eine zusätzliche Beschreibung enthält, ohne Erlaubnis auf der importierenden Seite ausgeführt.
Auf der Site, auf die ich verwiesen habe, wurde eingeführt, ein Skript zu schreiben, um die Funktionsweise des Moduls als Verwendung von if \ _ \ _ name \ _ \ _ == \ _ \ _ main \ _ \ _: zu testen. Es war. Das war's.
Wie wird es anders als zum Testen verwendet?
Was machen Sie, wenn Sie ein Skript schreiben, das Sie nicht modularisieren möchten, wenn Sie die Meldung "Ich denke, diese Funktion kann an anderer Stelle verwendet werden, also denken Sie an Modularisierung ..." erhalten. Verschieben Sie zu diesem Zeitpunkt die Funktion in ein anderes Skript oder entscheiden Sie sich, eine if-Anweisung wie die oben beschriebene zu verwenden und im Skript zu belassen?
Recommended Posts