Pythons Äquivalent von "public static void main"

Was ist Pythons Äquivalent von "public static void main (String [] args) {…}"? Ich erinnere mich, dass ich es in der Vergangenheit benutzt habe und dann vergessen habe.

Was ich im Grunde versuche, mich zu erinnern, ist eine Funktion, die ich denke, enthalten einige Unterstriche (__) …

Danke

5 Solutions collect form web for “Pythons Äquivalent von "public static void main"”

#!/usr/bin/env python import sys def main(args): print args if __name__ == '__main__': main(sys.argv) 

Bearbeiten : emulieren Sie eine void return.

 if __name__ == "__main__": ....do your thing 

Dies ist eine häufig verwendete Idiom, aber es ist nicht gleichbedeutend mit Java's public static void main(String args[]) . Alle Python-Module führen von oben nach unten alle Anweisungen im Modulbereich aus. Für die meisten importierten Module sind diese Anweisungen in der Regel auf Klassen- und Methodendefinitionen beschränkt, die Werte im Namespace des Moduls einrichten, aber nicht den Code der Funktionen ausführen. Aber wenn du eine Aussage auf SPECIAL_CONSTANT = 42 wie SPECIAL_CONSTANT = 42 , dann wird dies sofort ausgeführt, wenn das Modul importiert oder eigenständig ausgeführt wird – keine Notwendigkeit für main() oder __main__ oder irgendetwas. Versuchen Sie, eine print an die Spitze eines einfachen Moduls zu setzen. Ob Sie dieses Modul importieren oder es selbst aus der Befehlszeile ausführen, die print wird immer ausgeführt.

Was ist nett über diese idiom ist, dass es Ihnen erlaubt, einige einfache Tests oder Demo-Code direkt mit einer Bibliothek, die in der Regel von einem Modul von Ihrem Kunden geschrieben importiert wird eingebettet. Vielleicht so etwas wie dieses:

 # special_super_duper_module.py # this next statements will run, even though not in main() or set off # with "__name__ ==" tests or any such thing print "You are using special_super_duper_module.py, written by Felix the Cat" SPECIAL_CONSTANT = 42 def super_duper_function1(): pass def super_duper_function2(): pass if __name__ == "__main__": print "You are running special_super_duper_module.py interactively" assert super_duper_function1() == None, "expected None, got non-None result" assert super_duper_function2() == None, "expected None, got non-None result" # doctests or unittests could also go here, or just a simple demo 

Wenn das Modul von einem Code importiert wird, der deine Super-Duper-Funktionen verwenden will, dann wird das kleine Banner an der Spitze gedruckt, aber der Code, der bedingt ist, if __name__ etc.... wird nicht laufen. Aber wenn Ihr Benutzer das Modul direkt mit dem python-Befehl ausführt, wird der eingebettete Test- oder Demo-Code ausgeführt.

Im Gegensatz dazu ist die public static void main(String args[]) eine spezielle Methodensignatur, die der Java VM mitteilt, welche Methode, mit welcher Klasse sie beginnen soll. Python startet gerade an der Spitze des benannten Moduls und fängt an, von dort zu rennen. Deshalb musst du nur schreiben:

 print "Hello, World!" 

In einem Modul alleine, um dein erstes Python-Programm zu schreiben.

Die klassischen Versionen oben sind am häufigsten verwendet, aber für etwas umfassender, check out Guido van Rossums Blog-Post:

Alle Sachen Pythonic: Python main () Funktionen ( siehe auch die Kommentare für mehr)

Oh!

 if __name__ == '__main__': 
  • Integration von Java und Python Code in einem Eclipse Projekt
  • Sende korrekte Daten zwischen python und Java per Bluetooth
  • Wie rufe ich eine Sellerie Taskverzögerung Funktion von Nicht-Python-Sprachen wie Java?
  • Unterschiede in der RegEx-Syntax zwischen Python und Java
  • Programmieren Sie den Entwurf in Gmail-Entwürfe ordnungsgemäß
  • Python entspricht Java's BitSet
  • Android bluetooth senden Nachricht, die erstes Mal nur arbeitet
  • Erstellen einer TreeMap-Visualisierung
  • Python-Skript aus Java-Übergabe Argumente ausführen
  • SPOJ ADDREV Problem
  • Java roher Audioausgang
  • Python ist die beste Programmiersprache der Welt.