在 python 中声明谓词以指示字符串值时,是否有替代"not not"?



假设我有some_str_value,我想有一个谓词变量来指示该值是否为" true ";(有一个值).

详细的方式是:

predicate = some_str_value is not None and len(some_str_value) > 0

也可以这样写:

predicate = not not some_str_value

  1. 有比这种笨拙的语法更短的方法吗?
  2. 如果没有,是否有一个通用的直接替代方案?

我想你只是想要bool,即一个值是否为"真">

>>> bool("hi")
True
>>> bool("")
False
>>> bool(None)
False

注意,从学究的角度来说,这和"有值"并不是一回事。如果一个变量是在Python中定义的,那么它具有某个值。对于大多数内置容器,我想包括字符串,其思想是"非空"。

我还将注意到,拥有这个predicate变量几乎总是多余的。因为基本上每一个你会使用predicate的地方,例如:

if predicate:
do_something()

你可以把它替换成:

if some_str_value:
do_something()

所以,我要提醒一下,这可能根本不需要。

当然,在一些情况下,你确实需要一个bool对象,例如计算列表中非空字符串的数量:

>>> sum(map(bool, ["foo", "", "bar", ""]))
2

相关内容

最新更新