为什么当使用括号时,这些语句会像预期的那样工作:
>>> (True is False) == False
True
>>> True is (False == False)
True
但是当没有括号时,它返回False
?
>>> True is False == False
False
这是一个双重不等式,扩展为(True为False)和(False==False)
。例如,请参见在Python中编写双不等式时,运算符的优先级是多少(在代码中是显式的,对于数组如何重写?)
当涉及到比较运算符时,Python具有唯一的传递属性。在更简单的情况下会更容易看到。
if 1 < x < 2:
# Do something
这就是它看起来的样子。它检查是否为1
>>> True is False == False
False
它正在检查True是否为False和False==False,其中只有一个是true。
基于关于运算符优先级的python文档:
请注意,比较、成员资格测试和身份测试都具有相同的优先级,并且具有从左到右的链接功能,如比较部分所述。
实际上,你有一个链式语句,如下所示:
>>> (True is False) and (False==False)
False
您可以假设中心对象将在2个操作和其他对象之间共享(在这种情况下为False)。
请注意,它也适用于所有比较,包括以下操作数的成员资格测试和标识测试操作:
in, not in, is, is not, <, <=, >, >=, !=, ==
示例:
>>> 1 in [1,2] == True
False
问题内容: 使用括号时,这些语句为什么能按预期工作: 但是 ,如果没有括号,它会返回吗? 问题答案: 基于有关操作符优先级的python 文档 : 请注意,比较,成员资格测试和身份测试均具有相同的优先级,并且具有“比较”部分中所述的从左到右的 链接 功能。 因此,实际上您有一个链接语句,如下所示: 您可以假定中心对象将在2个操作和其他对象之间共享(在这种情况下为False)。 并且请注意,对于所有
问题内容: 如果我这样做: 那又回来了。仅仅是因为在列表中。 但是,如果我这样做: 那又回来了。而等于: 为什么? 问题答案: 运算符优先级 2.x,3.x。的优先级低于的优先级。因此,它等效于: 这就是你想要的: 正如@Ben指出的那样:建议从不写作,更喜欢。前者使它看起来像一个函数调用,而它却是一个运算符,而不是一个函数。
罗马数字颠倒一百 拉丁文小写字母反转C 变成数字二 变成数字三 为什么Python认为这些不是数字?
问题内容: 来自javascript类型的jQuery文档中的这段代码片段描述了转换为布尔值时字符串的行为(该主题与该问题无关,但这只是我找到代码的地方): 我得到了前三个示例,但没有得到最后一个示例,因为: 所以我假设: 但反而: 我什至不知道这是什么… 是因为: 如果是这样,这有什么目的? 问题答案: 返回一个不为null 的 对象 。非空对象始终是真实的。 结果,任何非null对象将始终为f
问题内容: 我正在使用a 检查我的哈希密码。我有PHP 5.5: 我上车了。我已经检查了posts的值和mysql user_password_hash返回。 我不知道为什么它返回假 有任何想法吗? 问题答案: 手册中的列长度可能是问题所在: 建议将结果存储在可扩展超过60个字符的数据库列中(255个字符是一个不错的选择)。 链接
问题内容: 在Python中(我仅使用Python 3.6进行过检查,但我相信它也适用于许多以前的版本): 但: 为什么两种方法的结果不同?相等运算符对元组的处理方式是否不同? 问题答案: 前两个表达式都解析为元组: (即),然后是 ,其次是(仍然如此)。 由于逗号分隔符相对于相等运算符具有较高的优先级,因此将表达式进行拆分:Python看到一个元组包含两个表达式,其中一个恰好是一个相等测试,而不