Pregunta Entero de Python incrementándose con ++ [duplicado]


Posible duplicado:
Python: Comportamiento de operadores de incremento y decremento 

Siempre me he reído a mí mismo cuando volví a mirar mis días VB6 y pensé: "¿Qué lenguaje moderno no permite incrementar con dobles signos más?":

number++

Para mi sorpresa, no puedo encontrar nada al respecto en los documentos de Python. Debo realmente sujetarme a number = number + 1? La gente no usa el ++/-- ¿notación?


541
2018-04-13 19:45


origen


Respuestas:


Python no es compatible ++, pero puedes hacer:

number += 1

995
2018-04-13 19:46



En pocas palabras, el ++ y -- los operadores no existen en Python porque no serían operadores, tendrían que ser declaraciones. Toda la modificación del espacio de nombres en Python es una afirmación, por simplicidad y coherencia. Esa es una de las decisiones de diseño. Y como los enteros son inmutables, la única forma de "cambiar" una variable es reasignándola.

Afortunadamente tenemos herramientas maravillosas para los casos de uso de ++ y -- en otros idiomas, como enumerate() y itertools.count().


342
2018-04-13 20:12



Tu puedes hacer:

number += 1

32
2018-04-13 19:47



Sí. los ++ el operador no está disponible en Python. A Guido no le gustan estos operadores.


21
2018-04-13 19:47



La razón principal por la cual ++ es útil en los lenguajes tipo C es para hacer un seguimiento de los índices. En Python, usted maneja los datos de una manera abstracta y rara vez se incrementa a través de índices y tal. Lo más cercano en espíritu a ++ es el next método de iteradores.


17
2018-04-13 20:12



Puedes usar:

number += 1

15
2018-04-13 19:47



Echa un vistazo a Comportamiento de operadores de incremento y decremento en Python para una explicación de por qué esto no funciona.

Python en realidad no tiene ++ y -, y personalmente nunca sentí que fuera una gran pérdida.

Prefiero funciones con nombres claros para operadores con semántica no siempre clara (de ahí la clásica pregunta de la entrevista sobre ++ x vs. x ++ y las dificultades de sobrecargarla). Además, nunca he sido un gran admirador de lo que hace el post-incremento para la legibilidad.

Siempre puede definir alguna clase de contenedor (como acumulador) con clara semántica de incremento, y luego hacer algo como x.increment () o x.incrementAndReturnPrev ()


9
2018-04-13 19:48



Aquí hay una explicación: http://bytes.com/topic/python/answers/444733-why-there-no-post-pre-increment-operator-python

Sin embargo, la ausencia de este operador en la filosofía python aumenta la coherencia y evita la implícita.

Además, este tipo de incrementos no se usan ampliamente en el código python porque python tiene una fuerte implementación del patrón de iterador más la función enumerate.


8
2018-04-13 19:53