更多內容,請訪問個人 我的博客。python
首先要知道的是,Python
中是沒有 ++
和 --
的。那麼要實現自增和自減的話,可使用以下操做:bash
a = a + 1
或
a += 1
複製代碼
咱們知道, python中的數字類型是不可變數據。也就是數字類型數據在 內存
中是不會發生改變,當變量值發生改變時,會新申請一塊內存賦值爲新值,而後將變量指向新的內存地址。 實驗以下:性能
>>> a = 10
>>> id(a)
140530470127960
>>> a += 1
>>> id(a)
140530470129080
複製代碼
能夠看到當 a
的值發生改變時,a
指向的內存地址也發生了改變。而在C語言中,a
指向的內存地址並不會發生改變,而是改變內存的內容。spa
+=
是改變變量,至關於從新生成一個變量,把操做後的結果賦予這個新生成的變量。
++
是改變了對象自己,而不是變量自己,即改變數據地址所指向的內存中的內容。code
既然 Python
中的數字類型是不可變的,那何來的「自增」這麼一說呢?對象
另外:blog
int
理論上是每次賦值都建立一個新對象的。可是因爲使用頻繁,爲了提高性能避免浪費,全部 python
有個 整數池,默認 [-5, 256]
的數字都屬於這個整數池,這些每次賦值的時候,是取得池中的整數對象。可是其餘的除外,以下:ip
>>> a = 5
>>> b = 5
>>> id(a)
140530470128360
>>> id(b)
140530470128360
>>> a is b
True
>>> c = 257
>>> d = 257
>>> id(c)
140530470136432
>>> id(d)
140530470136408
複製代碼
但:內存
有時候在 Python 中看到存在 ++i
這種形式,這其實不是自增,只是簡單的表示正負數的正號而已。正正得正,負負得正,因此 ++i
和 --i
都是 i
。get