Programmieren Funktionen definieren?
Ich will folgendes Wissen bzw ob ich es richtig verstehe:
bevor ich eine funktion definiere muss ich mir gedanken über parameter und rückgabewert machen. Rückgabewert ist das was die funktion zurückgeben soll richtig? In Python kann ich bei einer void funktion werte zurückgeben wieso?
Parameter verwirren mich ,ist es das was man in die funktion reinwirft oder kann man sie nutzen um eine variable für die funktion zu definieren. Kann mir jemand einfach erklären wozu die parameter sind und welche möglichkeiten sie mir bieten? So wie ich gesehen habe muss man paramter ja auch nicht immer zurückgeben.
Kann ich immer ohne nutzung von paramter das erreichen was ich mit tue? das hier kann ich z.b so machen:
def add(x, y):
result = x + y
return result
oder so:
def add():
x = 3
y = 5
result = x + y
return result
so wie verstehe also dem bsp nach lohnen sich parameter doch nur dann wenn man was in einer funktion ändern will ohne direkten eingriff
3 Antworten
Also der Text ist etwas verwirrend, aber ich versuche mal darauf einzugehen.
Du schreibst eine Funktion (meistens), weil du sie einerseits wiederverwenden willst und sie spezialisiert ist, etwas bestimmtes zu tun. Sie erfüllt also eine (nützliche) (Teil-)Aufgabe.
Also in dem Beispiel unten wird die Funktion 'multiply_and_print' mehrfach verwendet. Jedes mal mit anderen Parametern. Die übergebenen Parameter werden offensichtlich dafür verwendet, etwas zu berechnen. Eine Funktion kann etwas 'Richtiges' zurückgeben (siehe 'multiply'), aber eine Funktion kann auch einfach nichts zurückgeben (siehe 'multiply_and_print'). Ich kann bei einer Funktion ohne Rückgabe trotzdem eine Zuweisung des "Ergebnisses" machen, dann ist es halt None.
Führe den Code in der IDE deiner Wahl aus (ggf. benutze auch mal den Debugger), dann siehst du wie Python sich verhält.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
def multiply(a, b):
result = a * b
return result
def multiply_different(a, b) -> int:
result = a * b
return int(result)
def multiply_and_print(a, b):
result = multiply(a, b)
print("Result is: ", result)
def multiply_and_print_bit_different(a, b) -> None:
result = multiply_different(a, b)
print("Result is: ", result)
if __name__ == '__main__':
multiply_and_print(2, 9)
it_is_none_here = multiply_and_print(6, 3)
it_is_none = multiply_and_print_bit_different(1, 18.1)
print("Is it none here? ", it_is_none_here is None)
print("Is it none? ", it_is_none is None)
Zuerst musst du dir Gedanken machen, welche Aufgabe die Funktion erfüllen soll.
Nicht jede Funktion gibt Funktionswerte zurück. Da steht dann "void" = nichts.
Es gibt auch Funktionen ohne Parameter, die z. B. die Uhrzeit in einem gewünschen Format anzeigen oder eine Zufallszahl zurückgeben.
Die Möglichkeiten für Parameter sind sehr vielfältig.
Sie können als Wert übergeben werden oder als Objektverweis, also die Adresse wo im Speicher, das Objekt liegt.
Dann ist es der Funktion auch möglich, das Objekt direkt zu verändern.
ich bin jetzt auch nicht der mega entwickler aber...
parameter sind die variablen die werte speichern können.
rückgabewerte sind die art der werte die parameter zurückgeben können.
z.B. boolean true, false
funktionen sind ausführbare definitionen von code
ich kann dir aber nicht sagen ob das stimmt was ich hier geschrieben habe. Zumindest macht es so für mich Sinn
Wie genau würdes du also Parameter definieren ? Am besten in ich sag mal einfacher spracher