• # Évaluation partielle

    Posté par (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:

    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.

    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. :)