Funktionen und Variablen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
qcaine
User
Beiträge: 18
Registriert: Samstag 25. Dezember 2021, 10:05

Hi Leute, ich muss euch wieder mal mit meinen Anfängerproblemen belästigen :-)

Also ich hab da so ein kleines Programm geschrieben. Wollte es aber strukturiert halten deswegen habe ich alle Funktionen in einem
separaten file namens funktionen.py geschrieben, Um das zu verdeutlichen habe ich das Programm hier vereinfacht dargestellt um meine Problematik verständlicher zu machen. Es geht sich ja nur um das Funktionsprinzip.

Code: Alles auswählen


#Variante 1 funktion in main.py

a = int(input("zahl1 eingeben"))
b = int(input("zahl2 eingeben"))

def rechnen():
    c = a + b
    print(c)
rechnen()

#Variante 2: Die gleiche funktion in separatem file funktionen.py

import funktionen
a = int(input("zahl1 eingeben"))
b = int(input("zahl2 eingeben"))

funktionen.rechnen()

#Das funktionen.py file ist in dem gleichen Ordner wie die main.py

Die Variante 2 funktioniert leider nicht , ich vermute das die variablen a und b nicht in die Funktion übernommen werden wenn die
Funktion in einem separatem file liegt.
Wie kann ich die funktionen separat halten aber so das die variablen aus dem main.py übernommen werden ? Falls dass das Problem
überhaupt ist.
LG
Benutzeravatar
sparrow
User
Beiträge: 4540
Registriert: Freitag 17. April 2009, 10:28

Ich weiß nicht, ob die Aufteilung in ein extra Modul für Funktionen wirklich sinnvoll ist.
Unabhängig davon:

Du hast noch nicht verstanden, wie Funktionen funktionieren.
Funktionen bekommen alles, was sie benötigen, als Parameter übergeben und geben ihr Ergebnis per return zurück.
Du verwendest magisch in der Funktion auftauchende Werte - in diesem Fall globale Variablen - und das ist nie richtig.

In einem Python Programm stehen auf Modulebene (also ohne Einrückung) nur die importe, die Importe, die Definitionen von Klassen und Variablen und die Modulweiche um die erste Funktion main aufzurufen.

Wenn du das auf einen ersten Code anwendest, sieht er in etwa wie folgt aus:

Code: Alles auswählen


def benutzer_eingabe():
    linke_zahl = int(input("zahl1 eingeben"))
    rechte_zahl = int(input("zahl2 eingeben"))
    return linke_zahl, rechte_zahl

def rechnen(a, b):
    return a + b

def main():
    erster_wert, zweiter_wert = benutzer_eingabe()
    ergebnis = rechnen(erster_wert, zweiter_wert)
    print(ergebnis)

if __name__ == "__main__":
    main()
Die Namen sind mit Absicht so unterschiedlich gewählt um zu zeigen, dass die Namensräume komplett unterschiedlich sind.
In rechnen() ist kein erster_wert verfügbar, etc.
Eigentlich sind natürlich sprechende Namen sinnvoller, die dem leser deutlich vermitteln, wofür die Variable steht.
Antworten