Funktion Problem

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
umi
User
Beiträge: 2
Registriert: Freitag 16. Dezember 2022, 11:14

Hallo hab mal ein beispiel von meinem problem geschrieben.

Vielleicht hat jemand eine idee wie ich da weiter komme

def funk0():
a=8
def funk1():
funk0()
print(a)
funk1()


Danke Grüsse
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Bitte Code in Code tags setzen, damit man den lesen kann. An deiner Fehlerbeschreibung kannst du auch noch feilen - was passiert, was passiert nicht, was hast du erwartet. Auch wenn das hier teilweise klar ist: Variablen in Funktionen sind lokal. Du musst mit return den Wert zurueckgeben, und an einen neuen Namen (kann auch wieder a sein, oder auch etwas sinnvolleres) binden. Oder gleich ausgeben mit print(funk0()).
Benutzeravatar
__blackjack__
User
Beiträge: 14069
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@umi: Am besten ein Grundlagentutorial durcharbeiten wo das mit Funktionen und lokalen Namen erklärt wird. Die Namen von Argumenten und Zuweisungen innerhalb einer Funktion oder Methode sind nur innerhalb dieser Funktion oder Methode sichtbar. Ausserhalb kann man nicht darauf zugreifen. Was ja ein Grund für Funktionen ist — eine in sich geschlossene Einheit zu haben wo man sich keine Gedanken machen muss ob gleichlautende Namen noch irgendwo anders im Programm vorkommen und was die dort bedeuten. Und das man das auch von der Funktion von aussen auch nicht wissen muss wie die intern funktioniert. Man muss nur wissen was die Argumente sind/bedeuten und was die Funktion als Rückgabewert hat. Letzteres ist dann auch die Lösung: Falls Du ausserhalb ein Ergebnis verwenden willst, muss dieser Wert als Rückgabewert an den Aufrufer zurückgegeben werden. Und dort müsstest Du den dann auch an einen Namen binden oder eben gleich an der Stelle wo der Wert weiterverwendet werden soll, den Aufruf in den Ausdruck schreiben.

Edit: Apropos Namen: Ich weiss das ist nur ein Beispiel, aber Namen sollten weder kryptische Abkürzungen enthalten oder gar nur daraus bestehen, noch nummeriert sein. Gewöhn Dir so etwas gar nicht erst an.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
umi
User
Beiträge: 2
Registriert: Freitag 16. Dezember 2022, 11:14

Rückgabewert bei Funktionen war mir bisher noch unbekannt.

Danke mit der info bin ich weiter gekommen.
Antworten