【问题标题】:Returning the truthiness of a variable rather than its value?返回变量的真实性而不是其值?
【发布时间】:2015-02-01 18:26:19
【问题描述】:

考虑这段代码:

test_string = 'not empty'

if test_string:
    return True
else:
    return False

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

return True if test_string else False

但是,当我宁愿只返回布尔值时,我不喜欢测试布尔值是真还是假。我将如何返回它的真实性?

【问题讨论】:

  • 我看不出有什么区别,空字符串将评估为 False,反之亦然,对于非空字符串
  • @PadraicCunningham 我用一个字符串作为一个简单的例子。通常我可以只使用对象就可以逃脱。我的实际代码是检查服务是否正在运行。如果没有给出响应,我想返回 False。如果我确实得到了回应,我实际上并不关心价值是什么。我得到回应的事实就足够了。问题是我不想向我的用户提供响应。

标签: python string boolean truthiness


【解决方案1】:

你可以使用bool:

return bool(test_string)

演示:

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

【讨论】:

  • 快速回答:)。投票
  • 我做了更多的研究,发现一本书说首先调用__nonzero__来检查真实性,如果未定义,则调用__len__。我猜这与 bool() 的工作方式相同,对吧?
  • 这取决于您使用的 Python 版本。在 Python 2.x 中,bool() 将调用 __nonzero__,或者,如果未实现,则调用 __len__。如果这些都没有实现,那么它将返回True。这是reference。然而,在 Python 3.x 中,bool() 首先调用__bool__,这是__nonzero__ 的替代品。如需参考,请参阅我的答案中的链接。
猜你喜欢
  • 1970-01-01
  • 2011-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-14
  • 1970-01-01
  • 2019-09-25
  • 1970-01-01
相关资源
最近更新 更多