Python為什么不支持 i++/i--操作
你一定想過。然而情況卻不理想,python中只能使用類似于 i++/i--等操作。
python中的自增操作
下面代碼幾乎是所有程序員在python中進行自增(減)操作的常用方法。
- >>> a = 2
- >>> print(a)
- 2
- >>> a += 1
- >>> print(a)
- 3
- >>> a += 100
- >>> print(a)
- 103
- >>> b = 'Hi'
- >>> b += 1
- Traceback (most recent call last):
- File "<stdin>", line 1, in <module>
- TypeError: can only concatenate str (not "int") to str
- >>> b += ' data'
- >>> b
- 'Hi data'
上述代碼中,由于+運算符也可以表示字符串的串聯(lián),因此我們也可以將字符串在原來的基礎上進行附加。
我們可以使用a++將a遞增1嗎?
- >>> a++
- File "<stdin>", line 1
- a++
- ^
- SyntaxError: invalid syntax
結果是:No,根據設計,Python不允許使用++“運算符”。++術語在C ++ / Java中稱為增量運算符,在Python中沒有位置。
為什么Python中不支持++操作呢?
如果您想更詳細地了解這一點,則需要具有編程語言設計的背景知識。
在Python中不包括++運算符的選項是設計決定。負責使用Python語言創(chuàng)建功能的人們認為,無需引入CPP風格的增量運算符。
【注】什么是CPP?所謂的CPP其實就是C++,C++這個詞在中國大陸的程序員圈子中通常被讀做“C加加”,而西方的程序員通常讀做“C plus plus”。漲姿勢了
當Python解釋器從我們的輸入中解析a ++符號時,會用以下方式進行解釋:
由于二進制+運算符是加法運算符,因此a ++將被視為a,+和+。但是Python期望第一個+運算符之后的數字。因此,它將在a ++上給出語法錯誤,因為第二個+不是數字。
而++ a則會用以下方式進行解釋:
- Python中的一元+運算符指的是身份運算符。這只是返回整數。這就是為什么它是對整數的身份運算
- 例如,+ 5的值就是5,而+ -5的值是-5。這是一元運算符,適用于實數
- ++ a將被解析為+和+ a,但是第二個+ a再次被視為(+ a),因此,+(+(a))簡單地計算為a。
- 因此,即使我們想將a的值增加1,我們也無法使用++符號來實現,因為這種運算符不存在。
因此,我們必須使用+ =運算符進行這種增量。
- a += 1
- a -= 1
+=操作是如何進行的呢?
您可能會認為,由于存在=符號,因此它可能是賦值語句。但是,這不是常規(guī)的賦值語句。這稱為增強的賦值語句。(常規(guī)賦值操作的Plus版)
在常規(guī)賦值語句中,首先計算右側,然后再將其賦給左側。
- # 2 + 3 的結果是5,然后才將結果5分配給左邊的引用
- a = 2 + 3
但是,在增強的賦值語句中,首先操作的是左側,然后計算右側。這樣做是為了使更新后的值可以就地寫入左側。(具體的賦值內存分析后續(xù)的文章會涉及到)
- # 讀取a的值,然后就地添加3
- a += 3
這是不使用a = a + 1這樣的重新分配語句而增加變量的唯一方法。但是,在這里,總的來說,該選項無關緊要,因為解釋器將在運行時優(yōu)化代碼。