Python中“山寨”的自增自減操作符

Python中“山寨”的自增自減操作符

在Python中,我們可以通過“+=”或者“-=”操作符對變量自身進行加減操作。如:

Python中“山寨”的自增自減操作符

分別對變量spam進行加1和減1。

在其它語言,比如C++和Java中,都有自增和自減操作符“++”、“- -”(C++的名字本身就有比C要更強的意思)。在C++或者Java中,你可以

Python中“山寨”的自增自減操作符

由於這種寫法往往是許多bug的來源,所以Python非常明智地選擇沒有支持自增自減操作符。

但是奇怪的是,在Python中,以下代碼是完全合法的:

Python中“山寨”的自增自減操作符

究竟發生了什麼呢?

首先我們注意到,這裡的“++”和“- -”並沒有真的把spam的值加1和減1。

實際上,“-”操作符在Python中是一個一元操作符,它的作用是對一個值的符號取反。比如:

Python中“山寨”的自增自減操作符

一個值前面有多個一元操作符是合法的。你可以對一個值的負值取負,結果當然還是原來的值:

Python中“山寨”的自增自減操作符

這種寫法看起來很傻。現實中我們是不會把兩個“-”操作符連在一起用的,當然bug除外。

“+”操作符也是一樣。它的作用就是,啥也不做:

Python中“山寨”的自增自減操作符

所以這次你知道++spam是什麼意思了吧。

值得注意的是,“+”和“-”只能用在變量的前面。不像C++或者Java,“spam++”和“spam--”在Python中都是非法的:

Python中“山寨”的自增自減操作符

所以說,Python中並沒有自增和自減操作符,有的只不過是看起來很像的“山寨”貨而已。大家寫代碼的時候要多加小心。


分享到:


相關文章: