【发布时间】:2016-04-17 05:35:39
【问题描述】:
我在 Python 3.4 中有这样的函数:
def is_value_valid(the_str):
return len(the_str) != 0
当然还有其他写法,比如return the_str != ""。有没有更多的 Pythonic 方式来编写这个表达式?我熟悉真/假的概念,所以我知道我可以在 if 条件下简化它:
if not the_str:
# do stuff
但if 期望在其表达式中出现布尔结果(这是我作为 C++ 程序员的天真过分简化;对此我不熟悉标准语言)。但是,没有任何东西可以强制表达式在 return 语句中计算为布尔值。我试过只返回字符串,只要没有人将返回的值视为字符串,它在布尔上下文下调用代码就可以正常工作。但从后置条件的角度来看,我不想返回非布尔类型。
【问题讨论】:
-
bool(the_str)?? -
@Burhan 为什么不简单地
if not the_str? -
恕我直言,最 Pythonic 的方式是简单地使用
if语句。为什么要为如此琐碎的事情浪费函数调用?当然,除非这只是一个简化的例子。 -
我真的不理解显式转换值背后的原因,希望得到澄清。 (我收集到有人试图在问题中解释它,但我不明白。)
-
@PM2Ring: 我试过只返回字符串,只要没有人将返回值视为字符串,它在布尔上下文下调用代码就可以了。但从后置条件的角度来看,我不想返回非布尔类型。。所以目的是让函数返回一个布尔值。相反,返回字符串会公开函数的实现细节并返回错误的类型。
bool()是此用例的唯一合适的解决方案。
标签: python boolean truthiness