当前位置: 首页 > 面试题库 >

为什么“ True == not False”是Python中的语法错误?

梁丘逸仙
2023-03-14
问题内容

将布尔值与==Python中的作品进行比较。但是,当我应用布尔not运算符时,结果是语法错误:

Python 2.7 (r27:82500, Sep 16 2010, 18:02:00) 
[GCC 4.5.1 20100907 (Red Hat 4.5.1-3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> True == True
True
>>> False == False
True
>>> True is not False
True
>>> True == not False
  File "<stdin>", line 1
    True == not False
              ^
SyntaxError: invalid syntax
>>>

为什么这是语法错误?我希望not False它是一个返回布尔值的表达式,并且True == <x>只要<x>是具有有效语法的表达式,它都是有效语法。


问题答案:

它与Python中的运算符优先级有关(解释器认为您正在比较True与Not,因为==它的优先级高于not)。您需要一些括号来阐明操作顺序:

True == (not False)

通常,不能not在没有括号的比较右侧使用。但是,我想不出您需要not在比较右侧使用a的情况。



 类似资料:
  • 问题内容: 注意到今天在我们的代码库中有一行代码,我认为肯定会因语法错误而使构建失败,但是测试通过了,显然它实际上是有效的python(在2.x和3中)。 条件表达式有时不需要空格: 如果LHS是变量,则不起作用: 但是它似乎仍然可以与其他类型的文字一起使用: 这是怎么回事,出于某种原因,它是否有意成为语法的一部分?这个奇怪的怪癖是已知/记录的行为吗? 问题答案: 令牌之间的空白 除逻辑行的开头或

  • 问题内容: 我的交互式控制台的简要记录: 到底为什么呢? 编辑: 为了对比起见,请考虑运算符。 这使得有很大的意义,因为虽然和都意味着同样的事,作为一个条件语句,他们真的是不一样的东西。 再次编辑: 更有趣的后果: 问题答案: 因为Python中的Boolean是整数的子类型。从文档中: 布尔值是两个常量对象False和True。它们用于表示真值(尽管其他值也可以视为假或真)。在数字上下文中(例如

  • 问题内容: 为什么用Python生成? 我在这里阅读以下内容: 如果两个字符串文字相等,则将它们放在相同的内存位置。字符串是不可变的实体。不会造成伤害。 那么每个Python字符串在内存中只有一个位置吗?听起来很奇怪。这里发生了什么? 问题答案: Python(例如Java,C,C ++ 、. NET)使用字符串池/内联。解释器意识到“ hello”与“ hello”相同,因此它优化并使用了内存中

  • 问题内容: 使用括号时,这些语句为什么能按预期工作: 但是 ,如果没有括号,它会返回吗? 问题答案: 基于有关操作符优先级的python 文档 : 请注意,比较,成员资格测试和身份测试均具有相同的优先级,并且具有“比较”部分中所述的从左到右的 链接 功能。 因此,实际上您有一个链接语句,如下所示: 您可以假定中心对象将在2个操作和其他对象之间共享(在这种情况下为False)。 并且请注意,对于所有

  • 问题内容: 所以我在推特上看到了这两个 问题。语法错误怎么回事,但不是吗? 问题答案: 我猜想,如果可能的话,贪婪地将其解析为数字的一部分,使其成为 ,而不是方法调用的一部分。 小数点附近不能有空格,但是在方法调用中,您可以在空格前后添加空格。如果数字后跟一个空格,则该数字的解析将终止,因此无歧义。 让我们看一下不同的情况及其解析方式: