Le bouton poussoir

Python est le langage de prédilection du Raspberry Pi

Modérateurs : Francois, Manfraid

Bud Spencer
Raspinaute
Messages : 1089
Enregistré le : lun. 15 août 2016 21:38

Re: Le bouton poussoir

Message par Bud Spencer » jeu. 6 févr. 2020 19:58

MSG a écrit :
jeu. 6 févr. 2020 14:30
Lambda allège le code pour des petites fonctions simples (1 ligne) .
Ce n'est pas la leur principale utilité. Le véritable intérêt des lambda (que l'on appelle plus globalement fonctions anonymes) c'est surtout que l'on peut les utiliser en tant que paramètre. Les lambda sont très limitées en python (comme tout le reste), mais ca fonctionne très bien pour faire du filtrage ou de l'ordonnancement sur des listes d'objets. Pour la simplification de code, tu peux aussi utiliser les operateurs ternaires qui comme les lambda te permettent d'évaluer sur une ligne mais tout pareil en paramètre (j'en parle quelque part là dedans) .
MSG a écrit :
jeu. 6 févr. 2020 14:30
Pour le décode , ça ne tient pas dans une fonction lambda .
Si, mais pas avec python (encore que …) et de toute façon ce serait une mauvaise idée
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).

MSG
Raspinaute
Messages : 119
Enregistré le : ven. 26 déc. 2014 18:31

Re: Le bouton poussoir

Message par MSG » sam. 8 févr. 2020 09:29

Bonjour ,

Ça simplifie parfois la vie , le lambda , pour traiter un mot de n bits défini.

Code : Tout sélectionner

dec2bin = lambda n,bits=0 : "0" * (bits - n.bit_length()) + bin(n)[2:] * bool(n)
au passage , j'ai découvert que les nombres entier , ont des fonctions cachés .
Comme ici , n.bit_length() , savoir la longueur binaire d'un nombre décimal .
Étrangement , pour le nombre 0 , la longueur de bit vaut zéro d'où le calcul à la fin avec la fonction bool(n) qu'on peut remplacer par (n>0) .
0 ou 1 c'est la valeur du bit (0) , le bit_length() devrait valoir toujours 1 .

Bud Spencer
Raspinaute
Messages : 1089
Enregistré le : lun. 15 août 2016 21:38

Re: Le bouton poussoir

Message par Bud Spencer » dim. 9 févr. 2020 19:50

MSG a écrit :
sam. 8 févr. 2020 09:29
Ça simplifie parfois la vie , le lambda , pour traiter un mot de n bits défini.
dec2bin = lambda n,bits=0 : "0" * (bits - n.bit_length()) + bin(n)[2:] * bool(n)
hmmm … là, tu te la complique plus qu'autre chose pour pas grand chose. Juste un conseil, ne prend surtout pas l'habitude de substituer le rôle des fonctions par les lambda. Avec un langage laxiste comme python qui permet tout et surtout n'importe quoi, ca passe, mais si un jour tu t'orientes vers un vrai langage strict, tu vas vite te retrouver coincé.
MSG a écrit :
sam. 8 févr. 2020 09:29
au passage , j'ai découvert que les nombres entier , ont des fonctions cachés .
Il ni a rien de caché. En python tout est objet et bit_length() n'est qu'une méthode du type int
MSG a écrit :
sam. 8 févr. 2020 09:29
Étrangement , pour le nombre 0 , la longueur de bit vaut zéro
Il ni a rien d'étrange. La doc de la méthode est très clair la dessus et précise bien qu'elle ne retourne pas les zéros non significatifs. Combien faut t'il de bit significatif pour définir 0 ? réponse 0.
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).

Répondre

Retourner vers « Python »