??在c語言和c++中我們經常會用到自增或者自減的語句,但對于python中如果運用這種格式便會報錯…why?
一、預備知識
小整數池
??python中為了提高儲存效率,對于int類型的整型變量的儲存,有一個專門的小整數池,它會存放-5到256的整形數值,并對應相應的地址。當我們調用這個區間內的整型數值時,系統會從小整數池中將需要的數字拿出。
二、正文
- 對于c語言,當我們定義一個變量并對其賦值的時候,它會先分配一個內存地址,然后將我們賦予的值儲存到該地址當中。
- 但對于python它是從整數池中取得該對象。
- 因此當我們使用自增或者自減(i++或i–)的時候,它相當于對對象本身進行運算,但python中規定,數值對象是不能夠改變的。
例:1:
aa = 4
print(id(aa))
bb = 4
print(id(bb))
cc = -5
print(id(cc))
dd = -5
print(id(dd))
運行結果:
140709747410688
140709747410688
140709747410400
140709747410400
例2:
aa = 4
aa++
print(aa)
運行結果:
該程序會自動報錯
例3:
aa = 4
aa+=1
print(aa)
運行結果:
5
??aa+=1,這個語句相當于aa = aa + 1,它與自增不同,相當于先執行等號右邊的aa + 1,然后重新生成了一個變量aa,并等號右邊的值賦給新生成的aa變量。