如何在 return 语句中将字符串评估为布尔值?
How to evaluate string as boolean in return statement?
我在 Python 3.4:
中有这样的功能
def is_value_valid(the_str):
return len(the_str) != 0
当然还有其他的写法,比如return the_str != ""
。是否有更多 pythonic 方式来编写此表达式?我熟悉 truthy/falsy 的概念,所以我知道我可以在 if 条件下简化它:
if not the_str:
# do stuff
但是 if
期望 其表达式中的布尔结果(这是我作为 C++ 程序员的幼稚过度简化;我对此不熟悉标准语).但是,在 return 语句中没有强制表达式计算为布尔值。我只尝试 returning 字符串,只要没有人将 returned 值视为字符串,它就可以在布尔上下文中调用代码。但是从 post 条件的角度来看,我不想 return 非布尔类型。
这正是参数 bool()
function does; return a boolean based on evaluating the truth value 的内容,就像 if
语句一样:
return bool(the_str)
请注意 if
并不 期望 布尔值。它只是计算表达式结果的真值。
>>> bool("foo")
True
>>> bool("")
False
空字符串的计算结果为 False
,但其他所有内容的计算结果为 True
。所以这不应该用于任何类型的解析目的。
所以在你的情况下 return bool(the_str)
。
def is_value_valid(the_str):
return bool(len(the_str) != 0)
使用 bool(x) 将值转换为布尔值。此函数接受 len(the_str) != 0
,对其求值,将其转换为布尔值,然后 return 得到值。
bool(x) 不是必需的,您可以只使用括号,因为它已经 return 一个布尔值,默认情况下评估 return 布尔值。
正如几个人提到的,bool(the_str)
绝对是正确的选择。
但是如果你的方法要求给出一个字符串,我也会测试这个字符串是否真的是一个字符串(因为bool(5)
和bool("this is a string")
return 都为真。
return isinstance(the_str, str) and bool(the_str)
或者在 if
语句中使用时:
if isinstance(the_str, str) and the_str:
# here we are sure it's a string whose length > 0
if 语句自动将字符串计算为布尔值。但是,如果您想 return 您的字符串作为布尔值,您只需执行
return bool(the_str)
我在 Python 3.4:
中有这样的功能def is_value_valid(the_str):
return len(the_str) != 0
当然还有其他的写法,比如return the_str != ""
。是否有更多 pythonic 方式来编写此表达式?我熟悉 truthy/falsy 的概念,所以我知道我可以在 if 条件下简化它:
if not the_str:
# do stuff
但是 if
期望 其表达式中的布尔结果(这是我作为 C++ 程序员的幼稚过度简化;我对此不熟悉标准语).但是,在 return 语句中没有强制表达式计算为布尔值。我只尝试 returning 字符串,只要没有人将 returned 值视为字符串,它就可以在布尔上下文中调用代码。但是从 post 条件的角度来看,我不想 return 非布尔类型。
这正是参数 bool()
function does; return a boolean based on evaluating the truth value 的内容,就像 if
语句一样:
return bool(the_str)
请注意 if
并不 期望 布尔值。它只是计算表达式结果的真值。
>>> bool("foo")
True
>>> bool("")
False
空字符串的计算结果为 False
,但其他所有内容的计算结果为 True
。所以这不应该用于任何类型的解析目的。
所以在你的情况下 return bool(the_str)
。
def is_value_valid(the_str):
return bool(len(the_str) != 0)
使用 bool(x) 将值转换为布尔值。此函数接受 len(the_str) != 0
,对其求值,将其转换为布尔值,然后 return 得到值。
bool(x) 不是必需的,您可以只使用括号,因为它已经 return 一个布尔值,默认情况下评估 return 布尔值。
bool(the_str)
绝对是正确的选择。
但是如果你的方法要求给出一个字符串,我也会测试这个字符串是否真的是一个字符串(因为bool(5)
和bool("this is a string")
return 都为真。
return isinstance(the_str, str) and bool(the_str)
或者在 if
语句中使用时:
if isinstance(the_str, str) and the_str:
# here we are sure it's a string whose length > 0
if 语句自动将字符串计算为布尔值。但是,如果您想 return 您的字符串作为布尔值,您只需执行
return bool(the_str)