@MichaelM: Erst einmal Anmerkungen zum Beispielcode:
Grunddatentypen haben nichts in Namen verloren. Den Typen ändert man gar nicht so selten mal während der Programmentwicklung und dann muss man überall im Programm die betroffenen Namen ändern, oder man hat falsche, irreführende Namen im Quelltext. Also statt `list_of_functions` einfach nur `functions`.
Dann ist das recht umständlich eine leere Liste anzulegen, nur um gleich darauf mit mehreren `append()`-Aufrufen einzelne Elemente anzuhängen. Die kann man da auch gleich in die literale Liste schreiben.
Keine kryptischen Abkürzungen in Namen oder gar Namen die nur aus einer kryptischen Abkürzung bestehen. `fu`?
Man muss auch nichts an einen Namen binden was gleich darauf ausschliesslich mit einer ``return``-Anweisung verwendet wird.
``return`` ist keine Funktion, das sollte man also nicht so schreiben, dass es wie ein Funktionsaufruf aussieht. Da gehört ein Leerzeichen hin und die unnötigen Klammern gehören weg.
`func_1` und `func_2` sind auch schlechte Namen, weil nummeriert. Ich weiss, das ist nur ein Beispielcode, aber die Funktionalität der beiden Beispielfunktionen gibt es bereits in der Standardbibliothek im `operator`-Modul. Das ist jetzt auch nicht aufwändiger für ein Beispiel diese zu verwenden, statt sich die beiden Funktionen selbst zu schreiben.
Dann sähe das Beispiel als Zwischenstand so aus:
Code: Alles auswählen
#!/usr/bin/env python3
from operator import add, mul
def main():
functions = [add, mul]
for function in functions:
print(function(3, 4))
if __name__ == "__main__":
main()
Argumente pro Funktion kann man jetzt entweder ins Spiel bringen in dem man in der Liste Tupel aus Funktion und Argumenten speichert:
Code: Alles auswählen
#!/usr/bin/env python3
from operator import add, mul
def main():
functions = [(add, (3, 4)), (mul, (42, 23))]
for function, arguments in functions:
print(function(*arguments))
if __name__ == "__main__":
main()
Oder Closures mit `functools.partial()` erzeugt:
Code: Alles auswählen
#!/usr/bin/env python3
from functools import partial
from operator import add, mul
def main():
functions = [partial(add, 3, 4), partial(mul, 42, 23)]
for function in functions:
print(function())
if __name__ == "__main__":
main()