#Rückgabewerte bei Funktionen - was ist der Sinn?

1 messages · Page 1 of 1 (latest)

modern panther
#

Hallo,
Ich bin momentan die Basics am lernen was Programmieren / Python angeht.

Jetzt bin ich an einer Stelle wo def und return ins Spiel kommt.

Allerdings verstehe ich die Funktion anhand der Beispiele nicht wirklich.

Um eigene Funktionen zu verwenden muss ich diese erst definieren das habe ich verstanden.
Das Ergebnis eine Funktion kann mit return zurückgegeben werden, aber was bringt mir das genau?


def rect(d1, d2):
area = d1 * d2
perimeter = 2 * d1 + 2 * d2
price = 1000 * area
return area, perimeter, price

Dies ist ein Beispiel, welches mir gezeigt wird.
Kann mir jemand eventuell Beispiele geben, wo man das ganze eventuell bei einem Discord Bot anwendet?

Das man es einfach besser versteht?

Vielen Dank ❤️

patent boltBOT
#

hack - Danke für deine Frage!
› Unsere Community freut sich schon, dir bei deinem Problem weiterzuhelfen! Sei so lieb und unterstütze die Personen welche dir weitergeholfen in dem du die Antwort welche das Problem lösen konnte akzeptierst.

:stackoverflow: - Ich habe folgende Stackoverflow-Frage gefunden, die dir weiterhelfen könnte:

https://stackoverflow.com/questions/1372016/django-models-custom-functions

  • accept = Akzeptiert die Antwort und markiert dein Problem als gelöst.
    Alternativ kannst du auch /solved verwenden, falls du es selbst herausgefunden hast.

Pushe deinen Post für mehr Aufmerksamkeit mit /push.
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀

stray mauve
#

return in Python ist dazu da, um einen Wert aus einer Funktion zurückzugeben. Wenn eine Funktion aufgerufen wird, kann sie z.b. ein Ergebnis berechnen und dieses Ergebnis an den Funktionsaufruf zurückgeben. Das ist sehr nützlich, weil du den Wert, den die Funktion berechnet hat, speichern oder in einem anderen Teil deines Programms weiterverwenden kannst.

In deinem Beispiel berechnet die Funktion rect die Fläche, den Umfang und den Preis eines Rechtecks basierend auf d1 und d2. Die Funktion gibt dann diese drei Werte zurück. Den Rückegabewert könnte man z.b. so an einen Slashbefehl weitergeben:

@bot.command()
async def calculate(ctx, d1: float, d2: float):
    area, perimeter, price = rect(d1, d2)
    await ctx.send(f'Die Fläche ist {area}, der Umfang ist {perimeter} und der Preis ist {price}.')

Rückegabewerte bei Funktionen sind sehr wichtig, besonders wenn es Funktionen sind, die du später wiederverwenden kannst, z.b. wenn du das selbe nicht nur im Slashbefehl machen möchtest, sondern auch in einem anderen Event wie on_message.

Generell solltest du deine Funktionen so bauen, das man sie wiederverwenden könnte. Vermeide es Funktionen zu erstellen, die nur für Stelle A und nicht auch für Stelle B geeignet sind.

patent boltBOT
#

Rückgabewerte bei Funktionen - was ist der Sinn?

wanton musk
#

es ist doch schon mal sehr gut, dass du verstanden hast, dass du verstehen musst 😂

spaß beiseite, ich kann dem was yannic sagt nur zustimmen. zwei sachen will ich trotzdem (der vollständigkeit halber) hinzufügen...

#
  • funktionen kennt fast jeder schon aus der mathematik. da heißen die f(x) und haben als "rückgabewert" eine zahl, die dann auf der y-Achse dargestellt wird.
    das heißt, du hast als Eingabe x, und als Rückgabe y
    ähnlich ist es in der informatik. eine funktion ist eine prozedur, die mit einer eingabe aufgerufen wird und etwas zurück gibt (ganz generell formuliert).

    das kann man, wie yannic gut erklärt hat, benutzen, um wiederkehrende prozeduren zusammenzufassen. Brauchst du beispielsweise die formel variable = parameter1 * 100 an 10 verschiedenen stellen in deinem code, dann kannst du dir eine (in dem fall sogar mathematische 👀) funktion bauen f(x) = x * 100 und kannst dann an den stellen im code variable = f(parameter1) einsetzen.

    nun gut, bei so einem einfachen beispiel mag man argumentieren, dass das etwas unnötig ist, aber es gibt komplexere beispiele: nehmen wir den algorithmus zur berechnung der fibonacci folge ```py
    def fibonacci(n, memo={}):
    if n <= 0:
    return 0
    elif n == 1:
    return 1
    elif n in memo:
    return memo[n]
    else:
    memo[n] = fibonacci(n-1) + fibonacci(n-2)
    return memo[n]

#

** **stell dir vor, du müsstest das an 10 stellen im code abtippen... ziemlich anstrengend und irgendwann auch unleserlich, stimmts? dafür gibt es jetzt diese funktion, und diese gibt ein ergebnis zurück: diejenige fibonacci zahl, die du beim ersten aufruf für n eingibst.
wie das genau jetzt funktioniert, ist erstmal am anfang unwichtig, es geht nur darum, dass du den sinn von funktionen verstehst

übrigens am rande: viele funktionen die du direkt in python aufrufst, haben selber rückgabewerte. zum beispiel fast alle funktionen im math package haben einen rückgabewert: das ergebnis der berechnung. deshalb kannst du im code dann schreiben x = math.pow(y, 2), weil math.pow eine funktion ist, die die entsprechende potenz zurück gibt (source code ist in c, falls es jemanden interessiert ^^)

  • für einfache discord bots wirst du kaum rückgabewerte benötigen. wie yannic gezeigt hat, benutzt du meistens eine rückgabe im chat, direkt für den endbenutzer. wenn du aber in deinem code irgendwelche berechnungen anstellst und ihn aufräumen willst, dann kann sich schon manchmal ein extrahieren in funktionen lohnen ^^
#

(nachrichtenlimit in discord, sorry)

patent boltBOT