voi*_*ter 2 python boolean truthiness
我在Python 3.4中有这样的函数:
def is_value_valid(the_str):
return len(the_str) != 0
Run Code Online (Sandbox Code Playgroud)
当然还有其他方法来写这个,比如return the_str != "".是否有更多pythonic方式来编写这个表达式?我熟悉truthy/falsy的概念,所以我知道我可以在if条件下快捷方式:
if not the_str:
# do stuff
Run Code Online (Sandbox Code Playgroud)
但是if 期望在它的表达式中有一个布尔结果(这是我作为C++程序员的天真过度简化;我不熟悉这方面的标准).但是,没有任何东西可以强制表达式在return语句中求值为boolean.我试过只返回字符串,只要没有人将返回的值视为字符串,它在boolean context下调用代码就可以了.但是从后置条件的角度来看,我不想返回非布尔类型.
这正是bool()函数的作用; 返回一个基于评估参数真值的布尔值,就像if语句一样:
return bool(the_str)
Run Code Online (Sandbox Code Playgroud)
请注意,if不要指望布尔值.它只是评估表达式结果的真值.