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会返回这个布尔元组而不是单个元素?这个元组代表什么布尔比较?
因为:
"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)
归档时间: |
|
查看次数: |
97 次 |
最近记录: |