web-dev-qa-db-fra.com

Python entier incrémenté de ++

Duplicate possible:
Python: Comportement des opérateurs d'incrémentation et de décrémentation

Je me suis toujours moqué de moi-même lorsque j’ai jeté un regard en arrière sur mes journées VB6 et que je me suis dit: "Quel langage moderne ne permet pas d’augmenter les doubles signes plus?

number++

À ma grande surprise, je ne trouve rien à ce sujet dans la documentation Python. Dois-je vraiment me soumettre à number = number + 1? Les gens n'utilisent-ils pas la notation ++/--?

710
Znarkus

Python ne supporte pas ++, mais vous pouvez faire:

number += 1
1258
Daniel Stutzbach

Autrement dit, les opérateurs ++ et -- n'existent pas dans Python car ils ne seraient pas opérateurs, ils devraient être - déclarations. Toute modification d'espace de nom dans Python est une instruction, pour des raisons de simplicité et de cohérence. C'est l'une des décisions de conception. Et comme les entiers sont immuables, le seul moyen de "changer" une variable est de la réaffecter.

Heureusement, nous disposons d'excellents outils pour les cas d'utilisation de ++ et -- dans d'autres langues, comme enumerate() et itertools.count().

423
Thomas Wouters

Tu peux faire:

number += 1
46
knutin

Oui. L'opérateur ++ n'est pas disponible en Python. Guido n'aime pas ces opérateurs.

25

La principale raison pour laquelle ++ est pratique dans les langages de type C est la possibilité de garder une trace des index. En Python, vous traitez des données de manière abstraite et vous incrémentez rarement à travers des index, etc. La chose la plus proche en esprit de ++ est la méthode next des itérateurs.

20
Mike Graham

Vous pouvez utiliser:

number += 1
20
compie

Jetez un oeil à Comportement des opérateurs d'incrémentation et de décrémentation en Python pour une explication de la raison pour laquelle cela ne fonctionne pas.

Python n'a pas vraiment ++ et -, et personnellement, je n'ai jamais pensé que c'était une telle perte.

Je préfère les fonctions avec des noms clairs aux opérateurs avec une sémantique non toujours claire (d'où la question classique de l'entrevue sur ++ x vs x ++ et les difficultés de la surcharge). De plus, je n'ai jamais été un grand fan de ce que la post-incrémentation apporte à la lisibilité.

Vous pouvez toujours définir une classe wrapper (comme accumulateur) avec une sémantique d'incrémentation claire, puis faire quelque chose comme x.increment () ou x.incrementAndReturnPrev ().

11
Uri

Voici une explication: http://bytes.com/topic/python/answers/444733-why-there-no-post-pre-increment-operator-python

Cependant, l'absence de cet opérateur dans la philosophie python augmente la cohérence et évite l'implicite.

De plus, ce type d'incréments n'est pas largement utilisé dans le code python, car python dispose d'une implémentation puissante du modèle d'itérateur et de la fonction énumérer.

8
pygabriel