Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

Comment "figer" des parametres d'appel d'une fonction

+3 votes

j'ai la fonction

def foo(a, b):
    return a + b

comment créer la fonction bar=foo(a, 1) autrement que

def bar(a):
    return foo(a, 1)

il me semble avoir vu une feinter quelque part pour faire ça mais j'arrive pas à la retrouver

demandé 21-Jan-2016 par toub (430 points)
edité 22-Jan-2016 par yoch

1 Réponse

+8 votes
 
Meilleure réponse

Peut-être ceci :

import functools

bar = functools.partial(foo, 1)

Attention, les deux codes sont différents, ici on a fixé le paramètre a, du coup il n'est pas possible d'écrire bar(a=10) par exemple, mais en revanche on pourra écrire bar(b=10).

Sinon, il aurait fallu écrire :

bar = functools.partial(foo, b=1)
répondu 21-Jan-2016 par yoch (2,514 points)
sélectionné 22-Jan-2016 par toub

Excellente réponse. J'ajouterais que cette technique s'appelle currying, et il existe à ce propos un tuto de sam&max.

...