2017-05-03 69 views
-4

根據我的Python課本(學習Python的硬路)和互聯網上的幾個來源,操作Python的順序是: 括號指數乘除加減Python的訂單 - 加法和減法

那麼怎麼來的

> print 1-5+4 

返回0而不是-8?

+6

https://en.wikipedia.org/wiki/Order_of_operations#Mnemonics「這些助記符(PEMDAS)可能:

m_expr ::= u_expr | m_expr "*" u_expr | m_expr "//" u_expr | m_expr "/" u_expr | m_expr "%" u_expr a_expr ::= m_expr | a_expr "+" m_expr | a_expr "-" m_expr 

所以,你的表達1-5+4被按照上述規則解析這樣的事情如果用這種方式寫的話[7]會引起誤解,特別是如果用戶不知道乘法和除法的加法和減法的優先級相同,那麼加法和減法的優先級相同。「 – kennytm

回答

0

Python的運算符優先級的官方表是here (Python 2),並且與大多數語言一樣,加法&減法具有相同的優先級。

因此,看看如何定義binary arithmetic operators,您可以看到它將解析表達式,使得操作符從左到右應用(即,它將從左邊開始應用相同的優先級,稱爲左在相繼的加法/減法的情況下。

 1 - 5  + 4 
=  a_expr  + m_expr 
=(a_expr - m_expr) + m_expr 
=(m_expr - m_expr) + m_expr