2017-12-18 3 views
0

Hinweis: Mein Titel möglicherweise nicht genau so weit wie das, was Ich mag, erreichen wäre, aber ich kann aktualisieren, wenn jemand meine Terminologie korrigierenAssign verschachtelte Funktion auf Variable mit dem Parameter

Ich habe 2 Funktionen, die jeweils mit einem separaten Zweck und eigenständig verwendbar, aber gelegentlich möchte ich die beiden kombinieren, um beide Aktionen auf einmal durchzuführen und ein einzelnes Ergebnis zurückgeben, und dazu möchte ich einen Variablennamen

zuweisen Ich weiß, dass ich kann Erstellen Sie eine dritte Funktion, die im Grunde das tut, was ich will, wie es wirklich einfach ist .. obwohl es ein bisschen eine Herausforderung für mich selbst ist, einen Weg zu finden, dies zu tun

def str2bool(string): 
    return string.lower() in ("yes", "true", "t", "1") 

def get_setting(string): 
    if string == 'cat': 
     return 'yes' 
    else: 
     return 'no' 

VALID_BOOL = str2bool(get_setting) 

print VALID_BOOL('cat') 

Also im Grunde würde Ich mag die Kombination der zwei Funktionen einer Variablen zuzuweisen, die ich anrufen kann und im String-Parameter übergeben

In meinem realen Welt Code zu bewerten, get_setting() würde es einem Benutzer abrufen setze und gebe den Wert zurück, möchte ich dann diesen Wert testen und ihn als booleschen Wert zurückgeben

Wieder weiß ich, ich kann nur eine 3. Funktion erstellen, die den Wert erhalten und den Schnelltest machen würde. Aber das ist mehr zu lernen zu sehen, ob es so gemacht werden kann, wie ich es versuche ... und bis jetzt funktionieren meine verschiedenen Variationen von Zuweisung und Berufung nicht, ist es überhaupt möglich oder würde es zu komplex werden?

+0

Sie sie wie 'str2bool kombinieren (get_setting (valid_string))'. Wenn Sie einen einzelnen Namen aufrufen möchten, um beide zu verketten, benötigen Sie eine dritte Funktion (die einfach ein Lambda sein könnte, wenn Sie es aus irgendeinem Grund nicht "def" nennen wollen). – glibdud

+0

Entschuldigung, ich hatte einige Tippfehler in den Funktionsnamen in meinem Beispielcode, ich habe aktualisiert – MikeM

Antwort

1

Die Verwendung von Lambda ist einfach, aber ich weiß nicht, ob es genau das ist, wonach Sie suchen.

Beispiel:

f = lambda astring : str2bool(get_setting(astring)) 

Ausgänge:

>>> f('cat') 
True 
+0

Verdammt .. Ich hätte schwören können, ich habe es mit Lambda probiert! Muss die Syntax vermasselt haben, das funktioniert einwandfrei danke! – MikeM

+0

Ich bin froh, dass ich helfen konnte! – v4570

Verwandte Themen