Ich löse ein Rätsel mit Python und je nachdem, welches Rätsel ich löse, muss ich ein spezielles Regelwerk verwenden. Wie kann ich eine Funktion in Python an eine andere Funktion übergeben?
Beispiel
def Game(listA, listB, rules):
if rules == True:
do...
else:
do...
def Rule1(v):
if "variable_name1" in v:
return False
elif "variable_name2" in v:
return False
else:
return True
def Rule2(v):
if "variable_name3" and "variable_name4" in v:
return False
elif "variable_name4" and variable_name1 in v:
return False
else:
return True
Dies ist nur ein Pseudocode und daher nicht spezifisch, aber ich bekomme den Code zum Kompilieren, aber ich muss wissen, wie man die Funktion aufruft Game
und ob sie korrekt definiert ist, da Regeln für entweder Rule1(v)
oder umgeschaltet werden Rule2(v)
.
python
function
first-class-functions
Jchanger
quelle
quelle
myfunction
:myfunction
bedeutet die Funktion selbst,myfunction()
bedeutet, die Funktion aufzurufen und stattdessen ihren Rückgabewert abzurufen.Behandeln Sie die Funktion als Variable in Ihrem Programm, damit Sie sie einfach an andere Funktionen übergeben können:
quelle
invoker
müsste die Funktion diese Argumente dann beim Aufrufen der Funktion angeben.Zum Übergeben einer Funktion und aller Argumente an die Funktion:
Je nachdem, was Sie tun, kann es sinnvoll sein, eine zu definieren
decorator
oder möglicherweise zu verwendenfunctools.partial
.quelle
Gib es einfach so weiter:
und dann könnte Ihre Spielfunktion ungefähr so aussehen (immer noch Pseudocode):
quelle
Ein Funktionsname kann durch Löschen der Klammern zu einem Variablennamen werden (und somit als Argument übergeben werden). Ein Variablenname kann durch Hinzufügen der Klammern zu einem Funktionsnamen werden.
Setzen Sie in Ihrem Beispiel die Variable
rules
einer Ihrer Funktionen gleich, wobei Sie die Klammern und die Erwähnung des Arguments weglassen. Rufen Sie dann in Ihrergame()
Funktionrules( v )
mit den Klammern und demv
Parameter auf.quelle