[Python-de] Funktionscall per "String"

Achim Domma (Procoders) domma at procoders.net
Son Okt 5 19:18:58 CEST 2003


Hallo,

> Naja, ein anderes nettes Beispiel:
> Man bekommt von außen Befehle (zB String-Befehle über eine
> Schnittstelle),
> auf die man reagieren/antworten soll.
>
> Was wäre simpler und einfacher, die Funktion, in der die Reaktion
> erfolgt,
> so zu nennen wie den Befehl, und dann direkt über den Befehlsstring die
> richtige Funktion aufzurufen?

in realer, produktiver Software wirst du wohl kaum wollen, daß dein User
beliebige Funktionen aus deiner Software aufrufen will. In dem Fall wirst du
immer irgenwo eine Liste mit erlaubten Operationen pflegen müssen. Für
dieses Problem würde ich immer einen Dict verwenden:

ops = {
    'operationA':someFktToExecuteA,
    'operationB':someFktToExecuteB
    }

und dann:

try:
    ops[befehl](...)
except KeyError:
    print "unbekannter Befehl"

> Ich finde das kurz und verständlich.

Für ein einfaches Script ja, aber für produktiven Code nicht. Wie war das
mit 'explizit ist besser als implizit'?

Gruß,
Achim