La fonction identité en python


Même Disney fait du Python.
Allez, un post geek pour changer. Si le blabla vous fait chier, sautez directement à la section "Codage de la fonction identité en python" où vous trouverez - c’est dingue - plusieurs manières de coder la fonction identité en Python. D’ailleurs, si vous connaissez d’autres méthodes, je suis preneur.

La fonction Identité

La fonction identité c’est la fonction qui renvoie ses arguments tels quels, sans rien changer. Par exemple la fonction identité à un seul argument sur l’ensemble E est définie par Id : E -> E, Id(x) = x.
J’adore la fonction identité pour plusieurs raisons. Tout d’abord, cette fonction ne sert à rien. Je veux dire à rien de concret, rien de commercial, rien de monnayable. Moi, les trucs qui servent à rien de concret, j’adore ça ! Supposons qu’on ait déjà quelque chose noté x et bien c’est totalement inutile de lui appliquer en plus une fonction Id qui le transforme en lui-même. C’est un peu comme frotter une lampe mageek et, quand le génie nous demande un uneek vœu, on lui dit "que rien ne change". Puissant !

Ensuite j’aime bien la fonction identité parce qu’elle sert quand même à des trucs théoreeks (et qui donc ne servent à rien de concret). Par exemple, la fonction identité sert d’élément neutre pour la composition des fonctions. Genre : f ° Id = f, où ° est l’opérateur de composition. Et c’est neutre à gauche aussi : Id ° f = f. Palpitant ! Si je défini fn comme la composée n fois de f, genre f ° f ° … ° f ° f et bien on a f0 = Id. À vue de pied, quand on a une composition, un élément neutre et l’associativité on a une structure de monoïde, et ça, ça peut toujours être utile (ou pas).

Enfin, on peut utiliser la fonction identité pour obfusquer du code source. Obfusquer ça consiste essentiellement à rendre illisible (Un peu comme Metallurgeek :). Ça sert vaguement en sécurité informateek. Certes, il existe des tonnes d’autres méthodes, mais justement la variété des méthodes utilisées participe à la qualité de l’obfuscation. Donc, n’ayant vraiment rien à foutre de mieux, je me suis amusé à coder la fonction identité en Python, de plusieurs manières différentes. En voici des échantillons. Si vous avez d’autres idées je suis preneur.

Codages de la fonction identité en python

def Id01(x):
    return ([x][0])

def Id02(l):
    return [e for e in l]

def Id03(0):
    0-=-0
    return 0/2

def Id04(l):
    return l[::-1][::-1]

def Id05(l):
    try:
        return [l[0]] + Id05(l[1:])
    except:
        return []

Id06(x) = lambda x:

On peut appliquer l’identité au nombre 42 dont je vous parlerai dans un autre billet, nous avons donc : Id01(42)=42. Ce qui est une bonne chose parce que s’il y a bien un truc auquel il ne faut pas toucher c’est le nombre 42. On peut même appliquer l’identité à la fonction identité elle-même, et ça redonne quoi ? La fonction identité. Id01(Id01) == Id01. Grandiose !

2 commentaires:

affif a dit…

La fonction identité en version python 357 magnum, contrairement à la triviale version python qui fait le sujet de ce post,a un réel rôle dans la sécurité des biens et des personnes...surtout si on l'applique au nombre 22.lorsqu'elle est composée avec la fonction carte un codage de cette opération en python 357 magnum est:
vos papiers siou plait = /schlagg/schlagg :if forein return(country)

Anonyme a dit…

Merci