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 !