Retourner au contenu associé (entrée de forum : Argument de fonction récurrent)
Posté par Michaël (site web personnel) le 02 juin 2012 à 18:47. En réponse au message Argument de fonction récurrent. Évalué à 3. Dernière modification le 02 juin 2012 à 18:48.
Je rejoins les commentaires qui t'incitent plutôt à créer un objet encapsulant tes algorithmes, ce qui te permet d'obtenir le résultat attendu. Si tu tiens à l'évaluation partielle, voici une solution un peu moins compliquée que celle de Matthieu.
Elle fait 6 lignes:
def bind(x,f): def f_x(*argv, **argd): argv_x = [ x ] argv_x[1:] = argv return f(*argv_x, **argd) return f_x
Ce qui s'utilise commee ça:
def add(a,b): return a + b add2 = bind(2, add) print "La réponse est", add2(40)
Tu peux itérer le processus comme dans
add40and2 = bind(40, bind(2, add)) print "La réponse est", add40and2()
Tu peux varier la préparation de argv_x pour lier le dernier argument, le second etc. Voilà une variante qui lie des arguments de type dictionnaire.
argv_x
def bind_argd(x, f): def f_d(*argv, **argd): argd_x = dict(argd) for k,v in x.iteritems(): argd_x[k] = v return f(*argv_x, **argd_x) return f_x
Pour troller un peu, je précise que je n'aime pas du tout programmer en Python. :)
AltStyle によって変換されたページ (->オリジナル) / アドレス: モード: デフォルト 音声ブラウザ ルビ付き 配色反転 文字拡大 モバイル
# Évaluation partielle
Posté par Michaël (site web personnel) . En réponse au message Argument de fonction récurrent. Évalué à 3. Dernière modification le 02 juin 2012 à 18:48.
Je rejoins les commentaires qui t'incitent plutôt à créer un objet encapsulant tes algorithmes, ce qui te permet d'obtenir le résultat attendu. Si tu tiens à l'évaluation partielle, voici une solution un peu moins compliquée que celle de Matthieu.
Elle fait 6 lignes:
Ce qui s'utilise commee ça:
Tu peux itérer le processus comme dans
Tu peux varier la préparation de
argv_xpour lier le dernier argument, le second etc. Voilà une variante qui lie des arguments de type dictionnaire.Pour troller un peu, je précise que je n'aime pas du tout programmer en Python. :)