Heim  >  Artikel  >  Backend-Entwicklung  >  Was ist der Grund, warum Python keine Hauptfunktion hat?

Was ist der Grund, warum Python keine Hauptfunktion hat?

WBOY
WBOYnach vorne
2023-04-19 10:01:042168Durchsuche

Warum muss die Hauptfunktion als Einstiegspunkt erzwungen werden?

Diese Sprachen sind kompilierte Sprachen, die eine Kompilierung des Codes in ausführbare Binärdateien erfordern. Damit das Betriebssystem/Bootloader den Anfang des Programms findet, muss eine solche Funktion definiert werden.

Kurz gesagt, ein entscheidender Anfang muss in einer großen Menge ausführbarem Code definiert werden.

Es ist nicht schwer zu erkennen, dass für diese Sprachen die Hauptfunktion ein unverzichtbarer Bestandteil ist.

Wenn wir uns jedoch Python zuwenden, werden wir feststellen, dass die Situation ganz anders ist.

  • Python ist eine interpretierte Sprache, eine Skriptsprache. Der laufende Prozess wird Zeile für Zeile von oben nach unten durchgeführt, sodass sein Startpunkt bekannt ist.

  • Jede .py-Datei ist eine ausführbare Datei, die als Eingabedatei für das gesamte Programm verwendet werden kann, was bedeutet, dass die Eingabe des Programms flexibel ist und keinen Konventionen folgen muss.

  • Manchmal besteht beim Ausführen eines Python-Projekts keine Notwendigkeit, die Eintragsdatei anzugeben (häufiger ist die Befehlszeile, z. B. „python -m http.server 8000“), möglicherweise weil darin eine Datei „main.py“ vorhanden ist das Projekt, das im Softwarepaket als „Datei“ enthalten ist, auszuführen.

Kurz gesagt, Python als Skriptsprache unterscheidet sich von einer kompilierten Sprache. Unabhängig davon, ob es sich um ein einzelnes Modul (z. B. eine .py-Datei) oder ein aus mehreren Modulen bestehendes Softwarepaket handelt, kann Python eine flexible Ausführungsmethode wählen, die sich völlig von anderen Sprachen unterscheidet, die Einstiegspunkte definieren müssen.

Mit anderen Worten: Python verlangt von Programmierern nicht, einen einheitlichen Eintrag in der Syntax zu definieren (sei es eine Funktion, eine Klasse oder etwas anderes).

Einige Schüler sind möglicherweise verwirrt, weil sie häufig den folgenden Code sehen oder schreiben:

# main file  
def main():      
    ……  
  
if __name__ == '__main__':      
    main()

Ist das nicht die Hauptfunktion von Python? Ich glaube, viele Leute denken so!

Nein, ist es nicht.

Abgesehen davon, dass der Funktionsname „main“ lautet, hat dieser Code nichts mit der zuvor eingeführten Hauptfunktion zu tun. Diese Funktion ist weder notwendig noch kann sie die Ausführungsreihenfolge des Programms bestimmen. Auch wenn es keine Hauptfunktion wie oben gibt, treten keine Syntaxprobleme auf.

Der Hauptgrund, warum Leute eine Hauptfunktion schreiben möchten, besteht tatsächlich darin, zu betonen, dass es sich um eine Hauptfunktion handelt, und zu hoffen, sie künstlich als erste auszuführende Funktion festzulegen.

Sie denken vielleicht, dass die Funktion mit diesem Namen leichter zu merken ist.

Der Grund, warum sie name ==‘main’ geschrieben haben, könnte sein, dass sie angeben wollten, dass main() nur ausgeführt wird, wenn das aktuelle Skript direkt ausgeführt wird, und nicht, wenn es in andere Module importiert wird.

Allerdings empfehle ich persönlich diese Schreibweise nicht.

Um ein einfaches Beispiel zu geben: Angenommen, es gibt nur ein paar Dutzend Codezeilen oder eine Skriptdatei implementiert eine einfache Funktion (einen Crawler oder das Zeichnen einer Schildkröte usw.), aber alles ist auf die vorherige Weise geschrieben .

Die Schreibweise if name == 'main’ wird nicht empfohlen, weil:

  • Erstens: Wenn es nur eine Datei gibt, kann diese Datei nicht exportiert werden.

  • Zweitens wird bei mehreren Dateien dringend empfohlen, diese Anweisung nicht in die Eintragsdatei (main.py) zu schreiben. Theoretisch sollten seine Inhalte nicht zur Verwendung durch andere Module exportiert werden, da sie der Ausgangspunkt sind.

  • Abschließend wird im Fall mehrerer Dateien nicht empfohlen, diese Anweisung in eine Nicht-Eintragsdatei zu schreiben, da diese Anweisung höchstens Testcode schreiben kann. Dennoch sollte der Testcode separat in ein dediziertes Verzeichnis oder eine dedizierte Datei geschrieben werden.

Mir wird jedes Mal schlecht, wenn ich diesen ungeschickten Code sehe. Warum eine solche if-Anweisung schreiben? Sie sollten diesen Code überhaupt nicht in eine Funktion einbinden!

Das obige ist der detaillierte Inhalt vonWas ist der Grund, warum Python keine Hauptfunktion hat?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen