Pea*_*ful -4 python string if-statement boolean python-3.x
好吧这可能是微不足道的,但为了清楚起见,我仍然在问它:
In [1]: s = "abc"
In [2]: type(s)
Out[2]: str
In [3]: if s:
...: print("works")
works
In [4]: s == True
Out[4]: False
Run Code Online (Sandbox Code Playgroud)
所以字符串不等于True,甚至if认为它是True.明确检查是否s == True返回False.
In [6]: if not s:
...: print("works")
Run Code Online (Sandbox Code Playgroud)
所以这里的if声明not s是假的!怎么了?
if s类似于if bool(s),即评估值的布尔真值.更多的价值观不仅仅是真实的True.由于字符串不是值True,因此s == True为false.
默认情况下,对象被视为true,除非其类定义
__bool__()返回False的__len__()方法或返回零的方法(使用对象调用时).以下是大多数被认为是错误的内置对象:
- 常量定义为false:
None和False.- 任何数值类型的零:
0,0.0,0j,Decimal(0),Fraction(0, 1)- 空序列和集合:
'',(),[],{},set(),range(0)https://docs.python.org/3/library/stdtypes.html#truth-value-testing
| 归档时间: |
|
| 查看次数: |
126 次 |
| 最近记录: |