2012-08-01 81 views
-1

在Python中,布爾運算符是and, or not爲什麼`not(foo)`raise SyntaxError?

我在文檔中找不到任何地方可以將運算符用作語句或函數;但這不會引發任何錯誤?

>>> not(1) 
False 

但這

>>> and(1) 
SyntaxError: Invalid Syntax 

有什麼我失蹤約(),允許對與我們合作?

+0

Parens也用於分組。你有一組物品,而不是通話操作。 – Keith 2012-08-01 00:58:43

+0

關閉選民:爲什麼?這當然是一個真正的問題。 – Marcin 2012-08-12 13:58:44

回答

6

,對於同樣的原因,這個工程的工作原理:

not (True and False) 

也就是說,括號作爲分組操作,指示函數調用。無論表達式是否合法,parens也是合法的,並且可用於明確地將一個整體表達式組合在一起,這可用於覆蓋其他運算符的優先級(如(x + y) * z,與x + y * z不相同 - 後者相當到x + (y * z))。

and需要兩個參數,這就是爲什麼and(1)是語法錯誤 - 您只能指定一個參數。然而,(x) and (y)合法。

+0

爲什麼它只適用於'不'而不是其他布爾值? – 2012-08-01 01:01:15

+1

因爲'not'是一個*一元運算符 - 它作用於一個參數,它被賦予了右邊。 '和'是一個* binary *運算符,並且有兩個參數,一個在左邊,一個在右邊:'(x)和(y)'。 – cdhowie 2012-08-01 01:02:34

+0

是的,謝謝你,我只是自己意識到這一點! – 2012-08-01 01:06:39

3

你得到and的SyntaxError錯誤,因爲它是一個二元運算符,因爲括號不是:

(1) and(1) 

是合法的Python語法。

+0

你知道,有時它很明顯。我不知道我是如何錯過這個小珍聞的。 – 2012-08-01 01:06:14

相關問題