Funktionsrückgabe abhängig vom Aufruf
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
@schneitzmaster: Wobei Klassen an sich kein Allheilmittel sind! Es kommt eben immer auf den Kontext an. Also blos nicht einfach *alles* in eine Klasse flantschen und denken, dass das gut ist
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
Die drei Ausdrücke für die Werte c, d, e könnte man wiederrum als Funktionen definieren. Immerhin gelten sie für sich eigenständig und können als solche getestet werden:Funktionen sind ebenfalls Objekte und können z. B. wie andere Werte in Listen organisiert werden, über welche dann iteriert werden kann:Ein tolles Werkzeug sind List-Comprehensions. Mit diesen tat ich mich am Anfang recht schwer, aber wenn man sie einmal verinnerlicht hat, will man sie nicht mehr missen:
Aber hier kommt es auch, wie bei Klassen, auf den Kontext und das Problem an. Probleme sollten so weit wie möglich auf Teilprobleme heruntergebrochen werden, welche sich isoliert testen lassen (zum Beispiel in der Python-Konsole).
Code: Alles auswählen
def func_c(a, b):
return a * b
def func_d(a, b):
return a + b
def func_e(a, b):
return a - b
Code: Alles auswählen
>>> func_c(2, 3) == 6 # Expected: True
True
>>> func_d(2, 3) == 5 # Expected: True
True
>>> func_e(2, 3) == -1 # Expected: True
True
Code: Alles auswählen
>>> for f in [func_c, func_d, func_e]:
... print(f(2, 3))
...
6
5
-1
Code: Alles auswählen
>>> [f(2, 3) for f in [func_c, func_d, func_e]]
[6, 5, -1]
"Du bist der Messias! Und ich muss es wissen, denn ich bin schon einigen gefolgt!"
Wobei ich einen Einzeiler meistens eher ausschreiben würde anstatt ihn in eine Funktion zu kapseln. Einzeiler als Funktionen sind nur dann wirklich sinnvoll, wenn man sie mehrfach im Code einsetzen möchte, quasi ähnlich wie ein Makro. Oder wenn man irgendwelche freakigen Schreibweisen für ein Framework anbieten will, wie man das ja mitunter vorfindet.