Python中的增量和减量运算符?


Python 没有一元增量/减量运算符 (++/--)。要递增一个值,请使用

a += 1

要递减一个值,请使用 −

a -= 1

示例

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

Python 不会提供多种方法来做同一件事。

但是,如果您来自像 C 这样的语言,请注意,Python 没有 C 中的“变量”,Python 使用名称和对象,并且在 Python 整数 (int’s) 是不可变的。

让我们用一个例子来理解它:

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

因此,上述语句在 Python 中的含义是:创建一个值为 1 的 int 类型对象,并将其命名为 a。该对象是值为 1 的 int 的实例,名称 a 指向它。分配的名称 a 和它所指的对象是不同的。

现在让我们递增 a

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

由于 int 是不可变的,Python 将上述语句理解为:

  • 查找 a 引用的对象(它是一个 int,id 为 0x726756f0)

  • 查找对象 0x726756f0 的值(它是 1)。

  • 将 1 加到该值 (1+1 =2)

  • 创建一个值为 2 的新 int 对象(id 为 0x72675700 的对象)。

  • 将名称重新绑定到这个新对象 (0x72675700)

  • 现在 a 指向对象 0x72675700,而之前的对象 (0x726756f0) 不再由名称 a 引用。如果没有其他名称引用原始对象,它将在稍后被垃圾回收。

因此,从上面可以看出,当我们执行:a += 1

这会将 a 重新赋值为 a+1。这不是增量运算符,因为它不会递增 a,而是重新赋值。

让我们用更多例子来理解上述增量/减量:

>>> 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

从上面可以看出,a、b 和 c 引用的是同一个对象(id 为 1919375088 的 int)。

递增 a 的值后,a 现在被重新赋值为 a+1(id:1919375104),而其他 bc 仍然引用同一个对象 (1919375088)。

此外,Python 也没有 ++/-- 运算符。

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

更新于:2023年8月23日

63K+ 浏览量

开启您的职业生涯

完成课程获得认证

开始学习
广告