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

为什么`True is False == False`,在Python中是False?

何峰
2023-03-14
问题内容

使用括号时,这些语句为什么能按预期工作:

>>> (True is False) == False
True

>>> True is (False == False)
True

但是False如果没有括号,它会返回吗?

>>> True is False == False
False

问题答案:

基于有关操作符优先级的python
文档

请注意,比较,成员资格测试和身份测试均具有相同的优先级,并且具有“比较”部分中所述的从左到右的 链接 功能。

因此,实际上您有一个链接语句,如下所示:

>>> (True is False) and (False==False)
False

您可以假定中心对象将在2个操作和其他对象之间共享(在这种情况下为False)。

并且请注意,对于所有比较,包括隶属度测试和身份测试操作(其后为操作数),它也适用:

in, not in, is, is not, <, <=, >, >=, !=, ==

范例:

>>> 1 in [1,2] == True
False


 类似资料:
  • 为什么当使用括号时,这些语句会像预期的那样工作: 但是当没有括号时,它返回?

  • 问题内容: 在Python中(我仅使用Python 3.6进行过检查,但我相信它也适用于许多以前的版本): 但: 为什么两种方法的结果不同?相等运算符对元组的处理方式是否不同? 问题答案: 前两个表达式都解析为元组: (即),然后是 ,其次是(仍然如此)。 由于逗号分隔符相对于相等运算符具有较高的优先级,因此将表达式进行拆分:Python看到一个元组包含两个表达式,其中一个恰好是一个相等测试,而不

  • 问题内容: 将布尔值与Python中的作品进行比较。但是,当我应用布尔运算符时,结果是语法错误: 为什么这是语法错误?我希望它是一个返回布尔值的表达式,并且只要是具有有效语法的表达式,它都是有效语法。 问题答案: 它与Python中的运算符优先级有关(解释器认为您正在比较True与Not,因为它的优先级高于)。您需要一些括号来阐明操作顺序: 通常,不能在没有括号的比较右侧使用。但是,我想不出您需要

  • 问题内容: 来自javascript类型的jQuery文档中的这段代码片段描述了转换为布尔值时字符串的行为(该主题与该问题无关,但这只是我找到代码的地方): 我得到了前三个示例,但没有得到最后一个示例,因为: 所以我假设: 但反而: 我什至不知道这是什么… 是因为: 如果是这样,这有什么目的? 问题答案: 返回一个不为null 的 对象 。非空对象始终是真实的。 结果,任何非null对象将始终为f

  • 在一个空列表中,当循环计算到时发生的过程是什么? 例如: 本质上,我想知道

  • 罗马数字颠倒一百 拉丁文小写字母反转C 变成数字二 变成数字三 为什么Python认为这些不是数字?