Posté par gasche .
En réponse à la dépêche Python 2.7.
Évalué à 4.
Justement, au sujet des dictionnaires ordonnés : en quoi est-ce une bonne fonctionnalité ?
Disclaimer : je ne suis pas un programmeur Python, donc je n'ai pas en tête les utilisations idiomatiques du langage.
Je ne comprends pas pourquoi cette fonctionnalité est mise en avant comme quelque chose de tellement bien. Pour moi, un dictionnaire ordonné c'est au mieux une curiosité qui sert une fois par an, au pire une API mutante qui encourage de mauvaises pratiques.
J'ai suivi le lien pour la PEP (merci pour le lien), et certaines des raisons qui sont données (paraphrasées selon ce que j'en comprends) me laissent un peu perplexe
- quand on manipule des noeuds XML, on veut stocker les attributs dans un dictionnaire, mais qu'ils restent dans l'ordre : il me semble que d'après la définition de XML, les attributs ne sont pas ordonnés, et qu'il est donc une mauvaise pratique de dépendre de l'ordre des attributs d'un document XML.
- on veut porter du code depuis PHP qui utilise implicitement le caractère ordonné du dictionnaire : est-ce que le code de départ avait vraiment besoin de l'ordre ? Je comprends l'intérêt de pouvoir porter du code même mal écrit, mais ça fait sourire d'apprendre qu'on va améliorer Python en facilitant l'import de code PHP douteux.
La PEP cite aussi deux exemples crédibles où une telle structure serait utile (les "struct" de C, dont le layout mémoire dépend de l'ordre, et à la rigueur les noms de colonnes SQL bien qu'on les manipule en général de façon non ordonnée).
Je ne pense pas que les dictionnaires ordonnés soient à bannir, mais je pense qu'ils ne sont en général pas nécessaires et qu'ils font souvent plus de mal que de bien (cf. l'exemple des attributs XML qui se contente de perpétuer de mauvaises pratiques). Les mettre dans la stdlib, pourquoi pas, mais je suis étonné de tout le bruit que ça fait, et de l'absence de mise en garde à ce sujet.
[^] # Re: Fonctionnalités Python 3.1 -> 2.7
Posté par gasche . En réponse à la dépêche Python 2.7. Évalué à 4.
Disclaimer : je ne suis pas un programmeur Python, donc je n'ai pas en tête les utilisations idiomatiques du langage.
Je ne comprends pas pourquoi cette fonctionnalité est mise en avant comme quelque chose de tellement bien. Pour moi, un dictionnaire ordonné c'est au mieux une curiosité qui sert une fois par an, au pire une API mutante qui encourage de mauvaises pratiques.
J'ai suivi le lien pour la PEP (merci pour le lien), et certaines des raisons qui sont données (paraphrasées selon ce que j'en comprends) me laissent un peu perplexe
- quand on manipule des noeuds XML, on veut stocker les attributs dans un dictionnaire, mais qu'ils restent dans l'ordre : il me semble que d'après la définition de XML, les attributs ne sont pas ordonnés, et qu'il est donc une mauvaise pratique de dépendre de l'ordre des attributs d'un document XML.
- on veut porter du code depuis PHP qui utilise implicitement le caractère ordonné du dictionnaire : est-ce que le code de départ avait vraiment besoin de l'ordre ? Je comprends l'intérêt de pouvoir porter du code même mal écrit, mais ça fait sourire d'apprendre qu'on va améliorer Python en facilitant l'import de code PHP douteux.
La PEP cite aussi deux exemples crédibles où une telle structure serait utile (les "struct" de C, dont le layout mémoire dépend de l'ordre, et à la rigueur les noms de colonnes SQL bien qu'on les manipule en général de façon non ordonnée).
Je ne pense pas que les dictionnaires ordonnés soient à bannir, mais je pense qu'ils ne sont en général pas nécessaires et qu'ils font souvent plus de mal que de bien (cf. l'exemple des attributs XML qui se contente de perpétuer de mauvaises pratiques). Les mettre dans la stdlib, pourquoi pas, mais je suis étonné de tout le bruit que ça fait, et de l'absence de mise en garde à ce sujet.