Anwendungsbeispiele zur if-Anweisung in Python
Die if-Anweisung in Modulen
In Skripten kann die if-Anweisung verwendet werden, um die Ausführung bestimmter Anweisungen zu verhindern, falls das Skript als Modul importiert wird.
Wenn ein Skript direkt ausgeführt wird, hat der Name »__name__« den Wert »__main__«.
main.py
print( __name__ )
- Protokoll
__main__
Wenn ein Skript hingegen als Modul verwendet wird, hat der Name »__name__« den Namen des Moduls als Wert. Dies gilt sowohl bei einer mit »import« beginnender Verwendung als auch bei einer mit »from« beginnnenden Verwendung.
example.py
print( __name__ )
main.py
import example
- Protokoll
example
Wir können nun erkennen, ob ein Skript direkt ausgeführt oder als Modul importiert wird.
Hier ein Beispiel mit direkter Ausführung:
main.py
if __name__ == '__main__':
print( 'Ich werde direkt ausgefuehrt.' )if __name__ != '__main__':
print( 'Ich werde als Modul importiert.' )- Protokoll
Ich werde direkt ausgefuehrt.
Hier ein Beispiel mit einer Verwendung mit »import«:
example.py
if __name__ == '__main__':
print( 'Ich werde direkt ausgefuehrt.' )if __name__ != '__main__':
print( 'Ich werde als Modul importiert.' )main.py
import example
- Protokoll
Ich werde als Modul importiert.
Diese Technik wird in Skripten oft verwendet, um Anweisungen auszublenden, die nur ausgeführt werden sollen, falls das Skript direkt gestartet wird, aber nicht, wenn es als Modul importiert wird.
main.py
def zweifach( x ):
"""Ergibt das Doppelte.
>>> zweifach( 4 )
8"""
return 3 * xif __name__ == '__main__':
from doctest import testmod
testmod()
Hier ein Beispiel mit direkter Ausführung:
- Protokoll
**********************************************************************
File "main.py", line 3, in __main__.zweifach
Failed example:
zweifach( 4 )
Expected:
8
Got:
12
**********************************************************************
1 items had failures:
1 of 1 in __main__.zweifach
***Test Failed*** 1 failures.example.py
def zweifach( x ):
"""Ergibt das Doppelte.
>>> zweifach( 4 )
8"""
return 3 * xif __name__ == '__main__':
from doctest import testmod
testmod()
Hier ein Beispiel mit einer Verwendung mit »from«:
main.py
from example import zweifach
print( zweifach( 3 ))
- Protokoll
9