在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