Module mit Funktionsdefinitionen in Python anlegen
Mit »getcwd« kann das aktuelle Verzeichnis der zur Auswertung von »getcwd()« verwendeten Python -Implementation ermittelt werden.
- Protokoll
from os import getcwd
print( getcwd() )
C:\Users\dozent\AppData\Local\Programs\Python\Python37\
Wir können im aktuellen Verzeichnis eine Quelldatei mit Funktionsdefinitionen anlegen.
hello.py
def helloworld():
print( 'hello' )
print( 'world' )
Normalerweise gibt der Editor von IDLE das richtige Verzeichnis vor, also das Verzeichnis «getcwd()».
Das Modul darf nicht in einem anderen Verzeichnis als in «getcwd()» abgespeichert werden.
(Genauergesagt: Das Modul muß im selben Verzeichnis liegen wie auch das Hauptprogramm, von dem aus das Modul importiert wird.)
Wir können solche eine Quelldatei nun als Modul verwenden, aus dem wir die Funktionen importieren können.
- Protokoll
from hello import helloworld
world
helloworld()
hello
/ Übungsaufgabe ⃖ °
Schreiben Sie die folgenden Funktionsdefinitionen zum Einlesen eines int-Werts beziehungsweise eines float-Wertes in ein Modul »user«, so daß die Funktionen ab jetzt immer nach »from user import *« als »get« und »read« verwendet werden können.
- Definition von »get()«
def get( prompt='' ):
return int( input( prompt ))- Definition von »read()«
def read( prompt='' ):
return float( input( prompt ))
Die Namen dieser Funktionen bringen den Datentyp des Ergebnisses nicht gut zum Ausdruck! – Es erschien hier aber als wichtiger kurze Namen zu finden, um die Verkürzung zum Ausdruck zu bringen, welche die Definition erlaubt.
Teilnehmerfrage Wie kann man den Pfad erweitern, in dem nach Modulen gesucht wird? *
Man kann die Suchpfadliste ganz am Anfang eines Programmes erweitern (hier, um das Verzeichnis »C:\example«).
Dies kann aber zu verschiedenen Problemen führen, weswegen es besser ist, zunächst alle Module und Skripte in einem Verzeichnis zu halten. (Fortgeschrittene können dann mit Paketen oder ordentlichen Installationen von Modulen arbeiten.)
main.py
import sys
sys.path.append( r'C:\example' )