我有一个返回列表的函数
def get_something() -> List[str]:
return ['abc']稍后,我有一个函数(除其他外),它根据这个列表是否为空返回一个bool。基于PEP 8推荐的
对于序列(字符串、列表、元组),请使用空序列为false的事实。
我想写点什么
def check_something_implicit() -> bool:
return get_something() # implicit truthiness of returned list但是类型检查器会像返回错误一样
error: Incompatible return value type (got "List[str]", expected "bool")相反,我必须编写一个明确的版本,如
def check_something_explicit() -> bool:
return len(get_something()) > 0
# or
def check_something_explicit() -> bool:
return get_something() != []是否有一种方法在返回语句上下文中使用隐式真实性?
发布于 2022-10-06 12:34:43
正如@matszwecja所述,您只需将列表转换为布尔值,即
def check_something_explicit() -> bool:
return bool(get_something())我认为使用隐式布尔值实际上是为了完全避免check_something_explicit函数。在您的代码中,这看起来如下所示,例如:
# instead of this
if check_something_implicit():
# some further operations
# directly use this
if get_something():
# some further operationshttps://stackoverflow.com/questions/73973734
复制相似问题