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

Bur*_*lid -1 python syntax

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

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

>>> not(1)
False
Run Code Online (Sandbox Code Playgroud)

但这样做

>>> and(1)
SyntaxError: Invalid Syntax
Run Code Online (Sandbox Code Playgroud)

有什么我想念的东西()可以让它发挥作用吗?

cdh*_*wie 6

这与以下原因相同:

not (True and False)
Run Code Online (Sandbox Code Playgroud)

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

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