Was passiert, wenn __name__ == "__main__": tut?
Der __name__-Guard ist eine gängige Python-Sprache, die Benutzer schützt verhindern, dass versehentlich ein Skript aufgerufen wird, obwohl dies nicht beabsichtigt war. Das Weglassen dieses Schutzes kann zu unerwartetem Verhalten führen, wenn Sie das Skript in ein anderes Skript importieren oder als Pickle serialisieren.
So funktioniert es
Wenn der Interpreter liest Wenn Sie eine Quelldatei erstellen, führt sie zwei Dinge aus:
- Setzt spezielle Variablen wie __name__
- Führt den in der Datei gefundenen Code aus
Wenn Sie Ihr Modul als Hauptprogramm ausführen, wird __name__ auf „__main__“ gesetzt. Andernfalls wird __name__ beim Importieren des Moduls auf den Namen des Moduls gesetzt.
Der __name__-Schutz funktioniert wie folgt:
-
Wenn __name__ == '__main__' (main Programm):
- Führen Sie den Code innerhalb des Schutzkörpers aus (normalerweise Funktionen).
-
Wenn __name__ != '__main__' (importiertes Modul):
- Überspringen Sie den Code im Schutzkörper.
Code Beispiel
Untersuchen wir den folgenden Code:
print("before import") import math print("before function_a") def function_a(): print("Function A") print("before function_b") def function_b(): print("Function B {}".format(math.sqrt(100))) print("before __name__ guard") if __name__ == '__main__': function_a() function_b() print("after __name__ guard")
- Importieren: Mathematik wird ohne den Schutz importiert, was nicht ideal ist.
- Hauptprogramm: Wenn der Code als Hauptprogramm ausgeführt wird, wird er gedruckt „Funktion A“ und „Funktion B 10.0“ innerhalb des __name__-Schutzes.
- Importiertes Modul: Wenn der Code als reguläres Modul importiert wird, wird der Schutz übersprungen und die Funktionen werden übersprungen nicht ausgeführt werden.
Warum verwenden it?
Mit dieser Redewendung können Sie .py-Dateien schreiben, die sowohl als unabhängige Module als auch als Skripte verwendet werden können, die als Hauptprogramm ausgeführt werden. Einige Beispiele für seine Nützlichkeit:
- Bibliothek mit Demo-Modus:Eine Bibliothek mit einem Skriptmodus für Unit-Tests oder die Ausführung von Demos.
- Unit-Tests : Test-Frameworks importieren möglicherweise .py-Dateien als Module, sodass der __name__-Schutz erforderlich ist, um Skripte zu verhindern Ausführung.
- API-Bereitstellung: Ein Modul, das eine API für fortgeschrittene Benutzer bereitstellt und gleichzeitig als unabhängiges Programm ausgeführt wird.
- Vielseitiger Code: Es ist elegant um ein Skript durch Importieren seines Moduls auszuführen, und der __name__-Guard erleichtert dies.
Zusammenfassend lässt sich sagen, dass das if __name__ == '__main__' Guard kann weggelassen werden, wird jedoch aus Gründen der Vielseitigkeit, des Fehlerschutzes und zur Verhinderung unerwarteten Verhaltens beim Importieren oder Serialisieren von Code empfohlen.
Das obige ist der detaillierte Inhalt vonWas bewirkt Pythons Anweisung „if __name__ == „__main__':'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Tomgelistsinpython, Youcanusethe-Operator, ExtendMethod, ListCompredesion, Oritertools.chain, jeweils mitSpezifizierungen: 1) Der OperatorissimpleButlessEfficienceforlargelists; 2) Extendismory-Effizienzbutmodifiestheoriginallist;

In Python 3 können zwei Listen mit einer Vielzahl von Methoden verbunden werden: 1) Verwenden Sie den Bediener, der für kleine Listen geeignet ist, jedoch für große Listen ineffizient ist. 2) Verwenden Sie die Erweiterungsmethode, die für große Listen geeignet ist, mit hoher Speicher -Effizienz, jedoch die ursprüngliche Liste. 3) Verwenden Sie * Operator, der für das Zusammenführen mehrerer Listen geeignet ist, ohne die ursprüngliche Liste zu ändern. 4) Verwenden Sie iTertools.chain, das für große Datensätze mit hoher Speicher -Effizienz geeignet ist.

Die Verwendung der join () -Methode ist die effizienteste Möglichkeit, Zeichenfolgen aus Listen in Python zu verbinden. 1) Verwenden Sie die join () -Methode, um effizient und leicht zu lesen. 2) Der Zyklus verwendet die Bediener für große Listen ineffizient. 3) Die Kombination aus Listenverständnis und Join () eignet sich für Szenarien, die Konvertierung erfordern. 4) Die Verringerung () -Methode ist für andere Arten von Reduktionen geeignet, ist jedoch für die String -Verkettung ineffizient. Der vollständige Satz endet.

PythonexexecutionStheProcessOfTransformingPythonCodeIntoexexexecleableInstructions.1) ThePythonvirtualmachine (PVM) Ausführungen

Zu den wichtigsten Merkmalen von Python gehören: 1. Die Syntax ist prägnant und leicht zu verstehen, für Anfänger geeignet; 2. Dynamisches Typsystem, Verbesserung der Entwicklungsgeschwindigkeit; 3. Reiche Standardbibliothek, Unterstützung mehrerer Aufgaben; 4. Starke Gemeinschaft und Ökosystem, die umfassende Unterstützung leisten; 5. Interpretation, geeignet für Skript- und Schnellprototypen; 6. Support für Multi-Paradigma, geeignet für verschiedene Programmierstile.

Python ist eine interpretierte Sprache, enthält aber auch den Zusammenstellungsprozess. 1) Python -Code wird zuerst in Bytecode zusammengestellt. 2) Bytecode wird von Python Virtual Machine interpretiert und ausgeführt. 3) Dieser Hybridmechanismus macht Python sowohl flexibel als auch effizient, aber nicht so schnell wie eine vollständig kompilierte Sprache.

UseaforloopwheniteratoverasequenceOrforaPecificNumberoftimes; UseaWhileloopWencontiningUntilAconDitionisMet.ForloopsardealForknown -Sequencies, während whileloopSuituationen mithungeterminediterationen.

PythonloopscanleadtoErors-ähnliche Finanzeloops, ModificingListsDuringiteration, Off-by-Oneerrors, Zero-Indexingissues und Nestroxinefficiens.toavoidthese: 1) Verwenden Sie


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

EditPlus chinesische Crack-Version
Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

SublimeText3 Englische Version
Empfohlen: Win-Version, unterstützt Code-Eingabeaufforderungen!

MantisBT
Mantis ist ein einfach zu implementierendes webbasiertes Tool zur Fehlerverfolgung, das die Fehlerverfolgung von Produkten unterstützen soll. Es erfordert PHP, MySQL und einen Webserver. Schauen Sie sich unsere Demo- und Hosting-Services an.

SublimeText3 Linux neue Version
SublimeText3 Linux neueste Version

SecLists
SecLists ist der ultimative Begleiter für Sicherheitstester. Dabei handelt es sich um eine Sammlung verschiedener Arten von Listen, die häufig bei Sicherheitsbewertungen verwendet werden, an einem Ort. SecLists trägt dazu bei, Sicherheitstests effizienter und produktiver zu gestalten, indem es bequem alle Listen bereitstellt, die ein Sicherheitstester benötigen könnte. Zu den Listentypen gehören Benutzernamen, Passwörter, URLs, Fuzzing-Payloads, Muster für vertrauliche Daten, Web-Shells und mehr. Der Tester kann dieses Repository einfach auf einen neuen Testcomputer übertragen und hat dann Zugriff auf alle Arten von Listen, die er benötigt.
