为什么不`not(foo)`引发SyntaxError?

时间:2012-08-01 00:56:42

标签: python syntax

在Python中,布尔运算符为and, or not

我在文档中找不到运算符可用作语句或函数的任何地方;但这不会引起任何错误吗?

>>> not(1)
False

但这确实

>>> and(1)
SyntaxError: Invalid Syntax

我是否遗漏了()允许其工作的内容?

2 个答案:

答案 0 :(得分:6)

这与其有效的原因相同:

not (True and False)

即,parens充当分组运算符,表示函数调用。表达式合法的任何地方,parens也是合法的,用于显式地将一个整个表达式组合在一起,这可以用于覆盖其他运算符的优先级(如(x + y) * z中所示,与{{1}不同 - 后者等同于x + y * z)。

x + (y * z)需要两个参数,这就是为什么and是语法错误 - 你只指定了一个参数。但是,and(1) 是合法的。

答案 1 :(得分:3)

你得到带有and的SyntaxError,因为它是一个二元运算符,而不是因为括号:

(1) and(1)

是合法的Python语法。