Je résous un puzzle en utilisant python et en fonction du puzzle que je résous, je devrai utiliser un ensemble spécial de règles. Comment puis-je passer une fonction dans une autre fonction en Python?
Exemple
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
Ceci est juste un pseudo code et donc pas spécifique mais je reçois le code à compiler mais j'ai besoin de savoir comment appeler la fonction Game
et si elle est correctement définie puisque les règles seront commutées pour l'un Rule1(v)
ou l' autre Rule2(v)
.
python
function
first-class-functions
jchanger
la source
la source
myfunction
:myfunction
signifie la fonction elle-même,myfunction()
signifie appeler la fonction et obtenir sa valeur de retour à la place.Traitez la fonction comme une variable dans votre programme afin de pouvoir les passer facilement à d'autres fonctions:
la source
invoker
fonction devra alors fournir ces arguments lors de l'appel de la fonction.Pour passer à la fois une fonction et des arguments à la fonction:
Selon ce que vous faites, il peut être judicieux de définir un
decorator
, ou peut-être utiliserfunctools.partial
.la source
Passez-le simplement, comme ceci:
et alors votre fonction de jeu pourrait ressembler à quelque chose comme ceci (toujours pseudocode):
la source
Un nom de fonction peut devenir un nom de variable (et donc être passé en argument) en supprimant les parenthèses. Un nom de variable peut devenir un nom de fonction en ajoutant les parenthèses.
Dans votre exemple, assimilez la variable
rules
à l'une de vos fonctions, en laissant de côté les parenthèses et la mention de l'argument. Puis dans votregame()
fonction, invoquezrules( v )
avec les parenthèses et lev
paramètre.la source