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
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP