J'ai toujours ri en regardant mes journées en VB6 et en pensant "Quel langage moderne ne permet pas d'incrémenter avec des signes doubles plus ?
number++
À ma grande surprise, je ne trouve rien à ce sujet dans la documentation de Python. Dois-je vraiment me soumettre à number = number + 1
? Les gens n'utilisent-ils pas le ++
/ --
la notation ?
10 votes
Pour ma part, je suis très heureux que nous n'ayons pas à supporter des choses telles que
a[i] = i++;
où l'ordre d'évaluation en C++ est indéfini.3 votes
Même si une telle chose existe, je pense qu'en Python l'ordre est bien défini. ( docs.python.org/reference/expressions.html#evaluation-order )
5 votes
Les réponses à vos questions dans l'ordre donné : "Erlang, Python, Lua etc" (pour "moderne" signifiant après la création du C) ; "Non" ; et "Pas nécessairement".
0 votes
Tu parles du préfixe
++
ou postfix++
? Pour ma part, j'ai détesté enseigner cette partie du langage C, et je l'ai évitée à cause de ses ambiguïtés. Pourquoi chercher cette horrible chose dans d'autres langages ?4 votes
En effet, pourquoi avoir les raccourcis pour les tâches omniprésentes ?
76 votes
Je ne suis pas d'accord avec vous :
i++
est moins à écrire donc moins à lire. Moins à lire signifie que le cerveau peut se concentrer davantage sur l'image globale.10 votes
@TimPietzcker : une meilleure solution serait de bien définir l'ordre d'évaluation, probablement de gauche à droite, plutôt que de laisser tomber un opérateur utile. Et pour l'OP : Python est loin d'être un langage moderne... et c'est un langage assez merdique en fait, bien qu'il soit largement utilisé.
2 votes
@Robino Moins à lire, plus à traiter. Ce qui est plus complexe et plus moche,
i++
oi += 1
?5 votes
@uoPzC Aucun des deux n'est particulièrement complexe et aucun n'est laid. La première est plus rapide à comprendre.
0 votes
@TimPietzcker Python n'est pas un langage archaïque. Il possède une syntaxe assez unique et est facile à apprendre. Si vous voulez dire lent parce qu'il est interprété plutôt que compilé, Python est en fait très rapide.
0 votes
++i vs i++, alors parlons encore de "le cerveau peut se concentrer sur d'autres choses", @Robino.
0 votes
Je suis moi-même en train d'apprendre Python (après avoir travaillé en C#) et je trouve cela ennuyeux. Je dirais qu'il est plus intelligent de simplement l'implémenter et de laisser le programmeur choisir comment il veut écrire sa syntaxe. Franchement, il n'y a rien d'ambigu ou de difficile à comprendre dans i++. Les personnes qui utilisent ++i sans comprendre ce qu'il fait - c'est leur faute. Je ne pense pas que supprimer une déclaration aussi courante soit juste, mais peu importe, c'est ce que c'est.
3 votes
@JürgenA.Erhard
++i
= i est incrémenté puis renvoyé.i++
= i est retourné puis incrémenté. Cela me semble assez simple... Oui, une personne toute neuve qui n'a jamais vu ça avant pourrait ne pas le savoir, mais il ne faut pas grand chose pour le comprendre (une simple recherche sur Google/SO), et la flexibilité fournie est assez pratique dans certaines situations. Je suis moins libéral aveci++
que certains (je n'ai pas l'habitude d'utiliser des choses commeresult = array[i++]
par exemple). Je suis d'accord pour dire qu'il est plus rapide de voir ce qui se passe qu'avec un ordinateur.i += 1
. Mon cerveau n'a pas besoin d'analyser autant de choses, et j'ai le déclic dès que je le vois.