2014-12-04 56 views
3

考虑以下代码:返回变量的真实性而不是其值?

test_string = 'not empty' 

if test_string: 
    return True 
else: 
    return False 

我知道我可以构建一个条件表达式来做到这一点:

return True if test_string else False 

但是,如果当我是一个布尔值是真还是假的,我不喜欢测试d而只是返回布尔值。我将如何回报它的真实性?

+0

相关:http://stackoverflow.com/q/8205558/674039 – wim 2014-12-04 00:59:14

+0

我看不出有什么区别,一个空字符串将评估为False,反之亦然为非空字符串 – 2014-12-04 00:59:35

+0

@PadraicCunningham我用一个字符串作为一个简单的例子。通常我只能使用该对象就可以逃脱。我的实际代码是检查服务是否正在运行。如果没有回应,我想返回False。如果我确实得到了答复,我实际上并不关心它的价值。我得到回应的事实就足够了。问题是我不想提供响应给我的用户。 – 2014-12-04 01:08:19

回答

9

您可以使用bool

return bool(test_string) 

演示:

>>> bool('abc') 
True 
>>> bool('') 
False 
>>> 
+0

快速回答:)。投票了 – Khamidulla 2014-12-04 00:56:09

+0

我做了一些更多的研究,并发现一本书说真实是通过首先调用'__nonzero__'进行检查的,如果未定义则调用'__len__'。我猜这与bool()的工作原理是一样的,对吗? – 2014-12-04 01:17:23

+1

这取决于你使用的是什么版本的Python。在Python 2.x中,'bool()'将调用'__nonzero__',或者如果没有实现'__len__'。如果这两个都没有实现,那么它将返回'True'。这是一个[参考](https://docs.python.org/2/reference/datamodel.html#object.__nonzero__)。然而,在Python 3.x中,'bool()'首先调用'__bool__',它替代'__nonzero__'。有关参考资料,请参阅我答案中的链接。 – iCodez 2014-12-04 01:21:24

相关问题