Code: Alles auswählen
if __name__ == '__main__':
main()
Code: Alles auswählen
if __name__ == '__main__':
main()
Code: Alles auswählen
python script.py
Code: Alles auswählen
import script
Code: Alles auswählen
import numpy as np
import matplotlib.pyplot as plt
x_1d = np.linspace(-3,3,601)
y_1d = np.linspace(-2,2,401)
x_2d, y_2d = np.meshgrid(x_1d, y_1d)
z_2d = 1/(x_2d**2 + y_2d**2 + 1) * np.cos(np.pi * x_2d) * np.cos(np.pi * y_2d)
plt.figure()
plt.pcolormesh(x_2d, y_2d, z_2d)
plt.gca().set_aspect("equal")
plt.show()
Code: Alles auswählen
import numpy as np
import matplotlib.pyplot as plt
def main():
x_1d = np.linspace(-3,3,601)
y_1d = np.linspace(-2,2,401)
x_2d, y_2d = np.meshgrid(x_1d, y_1d)
z_2d = 1/(x_2d**2 + y_2d**2 + 1) * np.cos(np.pi * x_2d) * np.cos(np.pi * y_2d)
plt.figure()
plt.pcolormesh(x_2d, y_2d, z_2d)
plt.gca().set_aspect("equal")
plt.show()
if __name__ == '__main__':
main()
Der `if`-Block wird ausgeführt, wenn das Programm als Skript gestartet wird (z.B. via ``python dein_programm.py``). Denn in diesem Fall trägt Python für `__name__` den Wert "__main__" ein. Bei einem Import als Modul (``import dein_programm``) wird der Block *nicht* ausgeführt.crazyyzarc hat geschrieben:Was bedeutet es genau mir wurde es immer ganz lang erklärt wobei ich wenig verstand aber was nützt es und man muss man es überhaupt eintragen?
Code: Alles auswählen
if __name__ == '__main__': main()
Das etwas verwirrend ausgedrückt:snafu hat geschrieben:Der `if`-Block wird ausgeführt, wenn das Programm als Skript gestartet wird (z.B. via ``python dein_programm.py``). Denn in diesem Fall trägt Python für `__name__` den Wert "__main__" ein. Bei einem Import als Modul (``import dein_programm``) wird der Block *nicht* ausgeführt.
Code: Alles auswählen
#!/usr/bin/env python
from __future__ import print_function
print("__name__:", __name__)
Code: Alles auswählen
~ $ python test.py
__name__: __main__
Code: Alles auswählen
~ $ python
Python 2.7.6 (default, Jun 22 2015, 18:00:18)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import test
__name__: test
>>>
Code: Alles auswählen
def main():
print("Hi")
Code: Alles auswählen
def main():
print("Hi")
def ciao():
print("ciao")
if __name__ == '__main__':
main()
ciao()
Es gibt Leute, die das machen und *keine* eigene ``main``-Methode schreiben. In Deinem Beispiek gäbe es also kein ``main()``, sondern nur ``ciao()``! Ich persönlich bevorzuge eine ``main``-Methode der Bündelung von Funktionsaufrufen direkt im Hook.crazyyzarc hat geschrieben: Meine Frage: Wäre es nicht schlau alle Funktionen im if-Abteil zu lagern ? theoretisch könnte es gehen oder? also wie im Beispiel gezeigt:
Code: Alles auswählen
def do_something_else():
# usw.
def ciao():
# usw.
def main():
print("Hi")
do_something_else()
ciao()
# and so on...
if __name__ == '__main__':
main()