Saltar al contenido

[2021] ¿Operadores de incremento y decremento en Python? {DH}

junio 30, 2022

[2021] ¿Operadores de incremento y decremento en Python? {DH}



Python no tiene un operador de incremento/decremento unario (++/-). En lugar de aumentar un valor, utilice

a += 1

Para disminuir un valor, use −

a -= 1

ejemplo

>>> a = 0
>>>
>>> #Increment
>>> a +=1
>>>
>>> #Decrement
>>> a -= 1
>>>
>>> #value of a
>>> a
0

Python no ofrece múltiples formas de hacer lo mismo.

Sin embargo, tenga cuidado si viene de un lenguaje como C, Python no tiene «variables» en el sentido de C, en su lugar, Python usa nombres y objetos y en Python los números enteros (int) son inmutables.

Entendamos con un ejemplo.

>>> a =1
>>> print(id(a))
1919375088
>>> print(hex(id(a)))
0x726756f0

Entonces, lo que significa la declaración anterior en Python es: cree un objeto de tipo int que tenga el valor 1 y asígnele el nombre a. El objeto es una instancia de int con el valor 1 y el nombre a se refiere a él. El nombre asignado y el objeto al que se refiere son diferentes.

Ahora aumentamos un

>>> a +=1
>>> print(id(a))
1919375104
>>> print(hex(id(a)))
0x72675700

Dado que int son inmutables, Python entiende la declaración anterior como

  • Localice el objeto al que se refiere (es un int y el ID es 0x726756f0).

  • Busque el valor del objeto 0x726756f0 (es 1).

  • Sume 1 a este valor (1 + 1 = 2)

  • Cree un nuevo objeto int con valor 2 (objeto con ID 0x72675700).

  • Vuelva a vincular el nombre a este nuevo objeto (0x72675700)

  • Ahora a se refiere al objeto 0x72675700 y el objeto anterior (0x726756f0) ya no se conoce con el nombre a. Si no hay otros nombres que hagan referencia al objeto original, más tarde se recolectará como basura.

Entonces desde arriba puedes entender cuando hacemos: a + = 1

Esto reasigna un + 1. Este no es un operador de incremento porque no incrementa a, lo reasigna.

Entendamos el incremento/decremento anterior con otro ejemplo

>>> a = b = c =1
>>> id(a)
1919375088
>>> id(b)
1919375088
>>> id(c)
1919375088
>>> #Above all have the same id
>>>
>>> # Now increment a
>>> a +=1
>>> id(a)
1919375104
>>> id(b)
1919375088
>>> id(c)
1919375088

Desde arriba, puede comprender que tenemos un solo objeto al que se refieren, b y c (un int con ID 1919375088).

Ahora, al incrementar el valor de a, a se reasigna a a + 1 (id: 1919375104) y otros b y c se refieren al mismo objeto (1919375088).

Además, Python introduce el operador ++/-.

>>> a =1
>>> ++a
1
>>> --a
1

Raja

Publicado el 02 de mayo de 2019 12:32:25