Python中的“(1,)== 1”的含义是什么?

问题:

我正在测试元组结构,当我使用==操作符时,我发现这很奇怪:

>>>  (1,) == 1,
Out: (False,)

当我将这两个表达式分配给变量时,结果为true:

>>> a = (1,)
>>> b = 1,
>>> a==b
Out: True

这个问题与Python tuple trailing comma syntax rule不同。我问==运算符之间的表达式组。

回答:

其他答案已经告诉你,行为是由于操作符的优先级,如记载的here
下一次你有一个类似这样的问题时,我将向您展示如何找到答案。您可以使用ast模块解析表达式解析的方式:

>>> import ast
>>> source_code = '(1,) == 1,'
>>> print(ast.dump(ast.parse(source_code), annotate_fields=False))
Module([Expr(Tuple([Compare(Tuple([Num(1)], Load()), [Eq()], [Num(1)])], Load()))])

从这里我们可以看到代码被解析为as Tim Peters explained

Module([Expr(
    Tuple([
        Compare(
            Tuple([Num(1)], Load()), 
            [Eq()], 
            [Num(1)]
        )
    ], Load())
)])

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: What’s the meaning of “(1,) == 1,” in Python?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

+ 36 = 44