Python Argument Liants
Comment puis-je lier les arguments d'une méthode Python pour stocker un nullary functor pour plus tard invocation? Similaire à C++de boost::bind
.
Par exemple:
def add(x, y):
return x + y
add_5 = magic_function(add, 5)
assert add_5(3) == 8
Vous devez vous connecter pour publier un commentaire.
functools.partielle
retourne un callable emballage d'une fonction avec certains ou tous les arguments congelés.Ci-dessus l'utilisation est équivalent à celui-ci
lambda
.Je ne suis pas trop familier avec boost::bind, mais le
partial
fonction defunctools
peut être un bon début:Si
functools.partial
n'est pas disponible, alors il peut être facilement émulé:Ou
lambdas vous permettre de créer une nouvelle fonction sans nom avec moins d'arguments et d'appeler la fonction!
modifier
https://docs.python.org/2/library/functools.html#functools.partial
si vous prévoyez utiliser un argument nommé obligatoire dans l'appel de fonction, ceci est aussi valable:
Notez bien que l'
Ce serait le travail, trop:
g = curry(f)
, nous avonsf(x1,x2,...) = g(x1)(x2)...
Foncteurs peuvent être définis de cette façon en Python. Ils sont remboursables objets. La "liaison" de simples ensembles de valeurs d'argument.
Vous pouvez faire des choses comme