Python中何时需要给"not x"添加括号?
为什么括号会导致
True == not False出现语法错误? 先看你在Python 2.7和3.5里的测试结果:
>>> True == (not False) True >>> True == not False File "<stdin>", line 1 True == not False ^ SyntaxError: invalid syntax
问题出在Python的语法解析规则和运算符逻辑上:
not是一元运算符,它必须作用于单个完整表达式(比如not False),不能直接放在二元运算符(比如==)的右侧当“半成品”。- 写
True == not False时,Python会尝试解析==的左右两边,但==右侧直接接not是无效语法——==需要右侧是一个确定的值或完整表达式,而not本身不是值,得搭配操作数才能形成有效结果。 - 加上括号
(not False)后,就把not False打包成了一个独立的布尔表达式(结果为True),此时True == (True)完全符合语法规则,自然能正常执行。
简单说:括号强制让not False先被计算成完整值,避免了Python把==和not按错误顺序解析。
内容的提问来源于stack exchange,提问作者personal_cloud
相关产品推荐
相关产品推荐

