为什么这个Python布尔比较返回三元组?

New*_*ewb 2 python boolean behavior

我在Python 2.7.8的命令行上玩,我遇到了这种行为:

>>> "902".isdigit() == True
True
>>> "902".isdigit(), "2".isdigit() == True
(True, True)
>>> "902".isdigit(), "2".isdigit() == True,True
(True, True, True)
>>> ("902".isdigit(), "2".isdigit()) == (True,True)
Run Code Online (Sandbox Code Playgroud)

我发现这令人惊讶.我本来希望>>> "902".isdigit(), "2".isdigit() == True,True简单地返回True,好像我已经用括号中的两个表达式包围它们使它们成为元组.为什么Python会返回这个布尔元组而不是单个元素?这个元组代表什么布尔比较?

jon*_*rpe 8

因为:

"902".isdigit(), "2".isdigit() == True,True
Run Code Online (Sandbox Code Playgroud)

被解释为:

("902".isdigit(), ("2".isdigit() == True), True)
Run Code Online (Sandbox Code Playgroud)

请注意,您不应该测试布尔值==; 更加pythonic的方式来编写测试:

"902".isdigit() and "2".isdigit()
Run Code Online (Sandbox Code Playgroud)