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+ 瀏覽量

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.