在Python中,我們可以通過“+=”或者“-=”操作符對變量自身進行加減操作。如:
分別對變量spam進行加1和減1。
在其它語言,比如C++和Java中,都有自增和自減操作符“++”、“- -”(C++的名字本身就有比C要更強的意思)。在C++或者Java中,你可以
由於這種寫法往往是許多bug的來源,所以Python非常明智地選擇沒有支持自增自減操作符。
但是奇怪的是,在Python中,以下代碼是完全合法的:
究竟發生了什麼呢?
首先我們注意到,這裡的“++”和“- -”並沒有真的把spam的值加1和減1。
實際上,“-”操作符在Python中是一個一元操作符,它的作用是對一個值的符號取反。比如:
一個值前面有多個一元操作符是合法的。你可以對一個值的負值取負,結果當然還是原來的值:
這種寫法看起來很傻。現實中我們是不會把兩個“-”操作符連在一起用的,當然bug除外。
“+”操作符也是一樣。它的作用就是,啥也不做:
所以這次你知道++spam是什麼意思了吧。
值得注意的是,“+”和“-”只能用在變量的前面。不像C++或者Java,“spam++”和“spam--”在Python中都是非法的:
所以說,Python中並沒有自增和自減操作符,有的只不過是看起來很像的“山寨”貨而已。大家寫代碼的時候要多加小心。