Was bewirkt dies?
if __name__ == "__main__":
print("Hello world!")
Was bewirkt dies?
if __name__ == "__main__":
print("Hello world!")
Angenommen, ich habe Funktionen und Klassen für Web Scraping auf Wikipedia geschrieben. Natürlich ist das vielleicht kein gutes Beispiel.
Ich möchte diese Funktionen in einem anderen Programm verwenden, ohne es neu zu schreiben.
Nun, ich importiere sie, aber am Ende der Datei füge ich __name__ == '__main__'
Wenn wir import
ein Modul, so wird der gesamte darin enthaltene Code von Anfang bis Ende ausgeführt. Aber wenn er die Bedingung erreicht, wird er nicht ausgeführt func , func2 usw., das ist die Wikipedia __scrape__
.
Nun, im globalen Bereich kann ein Python __name__
ist definiert als '__main__'
für das aktuelle Programm.
Wenn wir import
ein Modul, wird es als Variable im Namensraum unseres aktuellen Programms definiert und aktuelles Programm __name__
est '__main__'
:
def func():
# Do something
pass
def func2():
# Do something
pass
print('The program name is set to ', globals()['__name__'])
if __name__=='__main__':
# In the current program, __name__ is equal to '__main__'
func('https://www.wikipedia.org')
func2('https://www.wikipedia.org')
# Or do more jobs
import test1
print('inside of current program')
print('name is current program', __name__)
print(globals()['test1'])
test1.func('another site')
test1.func2('another site')
inside of test 1
name of program is set to test1
end of module
inside of current
__main__
<module 'test1' from 'C:\\users\\ir\\appdata\\local\\programs\\python\\python38\\lib\\test1.py'>
Die aufgelistete Ausgabe ist im Vergleich zum aufgelisteten Code sehr unsynchronisiert. Können Sie nicht kopieren-einfügen es in anstatt Tippfehler zu machen?
Sie brauchen keine Erlaubnis, um hier zu schreiben, sondern um Ihrer selbst willen und um Ihrer Leser willen, bitte schreiben Sie Sätze groß und lassen Sie keine Satzzeichen weg. Dies erfordert keine besonderen Fähigkeiten nur die Bereitschaft, Gewohnheiten zu ändern. Und nicht Artikel auslassen - dies erfordert einige Fähigkeiten, aber ist es wirklich so schwierig? Sie benachteiligen sich von Anfang an, wenn Sie es nicht tun. Eine solche Umstellung wird auch Ihre Chancen auf dem Arbeitsmarkt erheblich verbessern. Vielen Dank im Voraus.
Wenn Sie das Modul (die Quelldatei) ausführen, wird die wenn Bedingung prüft, ob das Modul direkt oder aus einer anderen Quelldatei aufgerufen wird. Direkt bedeutet hier nicht importiert.
Wenn es direkt zur Ausführung aufgerufen wird, wird der Modulname auf "main" gesetzt und der Code innerhalb der wenn Block ausgeführt werden.
Bei dieser Antwort wird davon ausgegangen, dass der Auftraggeber (oder jeder Benutzer mit einer ähnlichen Frage) sowohl mit C und weiß, was ein Einstiegspunkt ist.
Diese Antwort geht auch davon aus, dass kein Code (außer Definitionen ohne Seiteneffekte) vor der if __name__ == "__main__"
blockieren. Technisch gesehen ist der Anfang des ausgeführten Skripts der Einstiegspunkt des Programms.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
34 Stimmen
Nur fürs Protokoll - was ist " Haupt ": docs.python.org/3/reference/ und was ist " Name ": docs.python.org/3/reference/