Demat' iNal
Au hasard d'un nouveau projet autour de l'analyse du langage Python, j'ai découvert quelques détails du langage Python que l'on peut résumer en cette simple ligne:
def _(*,_=...): [...]
outre l'aspect très perlesque de cette ligne, elle illustre plusieurs détails cocasses :
Il est possible de réutiliser le nom de la fonction dans un de ces arguments, et c'est l'argument qui a la priorité
C'était la première fois que je voyais la syntaxe avec une astérisque seule dans une liste d'argument, pour forcer l'usage de paramètres nommés pour les arguments suivants
L'ellipse (
...
) est une expression valide partout où une expression est possible. On ne peut pas faire grand chose avec, mais elle est là!
Voilou, cette fonction est inutile mais elle compile, c'est déjà ça!
# L’usage d’underscore dans les noms d’objet
Posté par Marotte ⛧ . Évalué à 3.
Notons que l’utilisation d’_ en Python est soumise à des conventions. Notamment, une fonction qui commence par _ est supposée être privée. En pratique elle ne sera pas importée avec un
from module import *
(elle pourrait toujours être appelée directement cela-dit)https://hackernoon.com/understanding-the-underscore-of-python-309d1a029edc?gi=7409e65729f4
[^] # Re: L’usage d’underscore dans les noms d’objet
Posté par barmic . Évalué à 5. Dernière modification le 06 janvier 2019 à 16:27.
Ouai mais bon ce n'est qu'une convention. Quasiment tous les langages ont pour convention qu'il faut indenter le code. Python s'est dis qu'une convention ça ne suffisait pas.
[^] # Re: L’usage d’underscore dans les noms d’objet
Posté par Elfir3 . Évalué à 3.
Si ce n'est que l'usage des underscores a semble-t-il des implications (voir commentaire plus haut). Dans la plupart des langages, l'indentation ou le manque d’indentation n'a pas vraiment d'impact.
[^] # Re: L’usage d’underscore dans les noms d’objet
Posté par barmic . Évalué à 2.
Le globbing
*
ne la match pas, c'est la seule particularité. Mais mon point c'est juste de mettre l'emphase sur le fait que Marotte parle juste de bonnes pratiques.Avec des bonnes pratiques tous les langages sont aussi fiables et performants les uns que les autres.
[^] # Re: L’usage d’underscore dans les noms d’objet
Posté par Victor STINNER (site web personnel) . Évalué à 8.
_
tout court est utilisé par convention pour assigner une variable qui n'est pas utilisée. L'exemple typique estfor _ in range(3): print('Bonjour')
: l'itérateur est inutilisé. Autre exemple :nom, _, domaine = email.partition('@')
, le 2e élément du résultat ("@"
) est ignoré. J'ai vu des cas avec plusieurs _ :x, y, _, _, z = func()
. Bon, il ne faut pas en abuser :-) C'est purement une convention, la variable existe et on peut la lire :-)Dans le REPL,
_
est une variable magique qui contient le dernier résultat. Magique car elle est définie dans le module builtins : c'est la variablebuiltins._
.[^] # Re: L’usage d’underscore dans les noms d’objet
Posté par flan (site web personnel) . Évalué à 6.
Mais "_" est également souvent utilisé pour gettext/i18n (avec '_("text")').
Du coup, on le voit également souvent doublé pour éviter des conflits.
[^] # Re: L’usage d’underscore dans les noms d’objet
Posté par barmic . Évalué à 2.
J'ai découvert ça en lisant le lien de Marotte. Ça fonctionne aussi avec ipython, c'est une trouvaille sympa pour moi (oui j'ai pas assez approfondi l'utilisation de cette perle :) ).
# Pitreries
Posté par Ruminant . Évalué à -1. Dernière modification le 06 janvier 2019 à 17:27.
J’ai mis du temps avant de comprendre…
# Et ça ?
Posté par rewind (Mastodon) . Évalué à 7.
Indice: ce n'est pas du Python mais c'est un autre langage que l'auteur du journal apprécie ;)
[^] # Re: Et ça ?
Posté par serge_sans_paille (site web personnel) . Évalué à 5.
Celui là est facile : appel sans argument d'une lambda sans capture et sans argument en C++11.
Notons qu'avec des virgules ça devient du python valide !
[^] # Re: Et ça ?
Posté par Manozco . Évalué à 5.
Quel langage? :)
[^] # Re: Et ça ?
Posté par shbrol . Évalué à 3.
shell, fork bomb.
# Comme quoi
Posté par Christophe B. (site web personnel) . Évalué à 3. Dernière modification le 08 janvier 2019 à 12:01.
Même avec python on peut faire du code illisible
C'est ce qui m'a fait abandonner le perl … la lisibilité surtout avec des scripts qui marche trop bien
et que tu ne modifies que tout les 2 ou 3 ans
Reste maintenant à trouver l'utilité de cette expression
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.