• [^] # Re: Bof...

    Posté par . En réponse au message de la puissance de (beep) pour trouver un truc simple en 2 minutes. Évalué à 2.

    Euh [...] (tu as testé ton code ?)

    Nope... damned, tu m'as eu ! Mais l'idée y était.
    Autre façon, plus utile car plus susceptible de coller à du code réel en python il me semble:

    class C1:
    ....val=5

    class C2:
    ....val=7

    liste = [ 1, 2, 3 ]
    a=C1
    l = lambda x : a.val
    print map(l, liste)
    a=C2
    print map(l, liste)

    Et celui-là je l'ai testé ;)

    Il est donc possible de "simuler" une closure en Python en définissant un getter pour la variable que l'on veut capturer - je ne m'en étais pas douté, cette discussion aura au moins l'avantage de me révéler ça :)

    À la bonne heure...

    on ne peut pas franchement dire que ce soit d'une élégance folle, tu ne trouves pas ?

    Le code ci-dessus est plus propre ; m'enfin autant les formes fonctionnelles c'est du quotidien et c'est indispensable, autant la fermeture ça m'a encore jamais manqué ; j'imagine que tu dois pas en avoir un besoin cruel tous les jours, donc pour l'occasion tu peux bien accepter d'avoir ponctuellement du code qui ait pas une forme idéale.

    Par exemple ce qui me manque pas mal c'est l'opérateur conditionnel ternaire (condition)?xx:yy. Tant pis, je fais sans, et ça n'est certainement pas son absence qui me fera dire de python comme toi "un bon langage pour mauvais programmeur". Ça n'est pas faux, d'ailleurs, c'est juste aussi un bon langage pour bon programmeur ;)