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),而其他 b 和 c 仍然引用同一个对象 (1919375088)。
此外,Python 也没有 ++/-- 运算符。
>>> a =1 >>> ++a 1 >>> --a 1