我正在写一个单元测试断言返回值不是空的,所以我写了类似的东西assert(value, True),我得到了一个错误AssertionError: '72a7090610eb11e398d40050569e0016' != True
Python 2.7.3 (default, Aug 1 2012, 05:14:39)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 'abc' == True
False
Run Code Online (Sandbox Code Playgroud)
我一直认为非空字符串或> 1整数将评估为True,也许我对PHP感到困惑.
我一直认为if 'abc'相当于if 'abc' == True显然我错了:(
'abc'不等于True,但它是真的.这是两个不同的概念!换句话说,这不会打印'ok':
if 'abc' == True:
print 'ok'
Run Code Online (Sandbox Code Playgroud)
......但这会:
if 'abc':
print 'ok'
Run Code Online (Sandbox Code Playgroud)
你将节俭与平等混为一谈; 它们不是同一件事.bool()如果您需要与实际值True和False值进行比较,请使用:
>>> bool('abc')
True
Run Code Online (Sandbox Code Playgroud)
您通常不直接与== True或比较== False.相反,您使用条件表达式或语句:
if 'abc':
pass
while 'def':
pass
foo if 'abc' else bar
Run Code Online (Sandbox Code Playgroud)
只有空容器,数字零和False并且None是假的,其他一切都是无用的; 您可以使用它bool()来明确地测试该条件.您可以通过实现__len__()和返回使自定义类型看起来像空容器0,或者通过实现*看起来像一个数字,并在实例是数字零的布尔等价物时返回.__nonzero__()False
*在Python 3中,请__bool__改用.
| 归档时间: |
|
| 查看次数: |
612 次 |
| 最近记录: |