使用括号时,这些语句为什么能按预期工作:
>>> (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认为这些不是数字?