在Python中,布爾運算符是and, or not
爲什麼`not(foo)`raise SyntaxError?
我在文檔中找不到任何地方可以將運算符用作語句或函數;但這不會引發任何錯誤?
>>> not(1)
False
但這
>>> and(1)
SyntaxError: Invalid Syntax
有什麼我失蹤約()
,允許對與我們合作?
在Python中,布爾運算符是and, or not
爲什麼`not(foo)`raise SyntaxError?
我在文檔中找不到任何地方可以將運算符用作語句或函數;但這不會引發任何錯誤?
>>> not(1)
False
但這
>>> and(1)
SyntaxError: Invalid Syntax
有什麼我失蹤約()
,允許對與我們合作?
,對於同樣的原因,這個工程的工作原理:
not (True and False)
也就是說,括號作爲分組操作,不指示函數調用。無論表達式是否合法,parens也是合法的,並且可用於明確地將一個整體表達式組合在一起,這可用於覆蓋其他運算符的優先級(如(x + y) * z
,與x + y * z
不相同 - 後者相當到x + (y * z)
)。
and
需要兩個參數,這就是爲什麼and(1)
是語法錯誤 - 您只能指定一個參數。然而,(x) and (y)
,是合法。
爲什麼它只適用於'不'而不是其他布爾值? – 2012-08-01 01:01:15
因爲'not'是一個*一元運算符 - 它作用於一個參數,它被賦予了右邊。 '和'是一個* binary *運算符,並且有兩個參數,一個在左邊,一個在右邊:'(x)和(y)'。 – cdhowie 2012-08-01 01:02:34
是的,謝謝你,我只是自己意識到這一點! – 2012-08-01 01:06:39
你得到and
的SyntaxError錯誤,因爲它是一個二元運算符,因爲括號不是:
(1) and(1)
是合法的Python語法。
你知道,有時它很明顯。我不知道我是如何錯過這個小珍聞的。 – 2012-08-01 01:06:14
Parens也用於分組。你有一組物品,而不是通話操作。 – Keith 2012-08-01 00:58:43
關閉選民:爲什麼?這當然是一個真正的問題。 – Marcin 2012-08-12 13:58:44