首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >返回类型的隐式真实性

返回类型的隐式真实性
EN

Stack Overflow用户
提问于 2022-10-06 12:23:26
回答 1查看 58关注 0票数 2

我有一个返回列表的函数

代码语言:javascript
复制
def get_something() -> List[str]:
    return ['abc']

稍后,我有一个函数(除其他外),它根据这个列表是否为空返回一个bool。基于PEP 8推荐的

对于序列(字符串、列表、元组),请使用空序列为false的事实。

我想写点什么

代码语言:javascript
复制
def check_something_implicit() -> bool:
    return get_something()  # implicit truthiness of returned list

但是类型检查器会像返回错误一样

代码语言:javascript
复制
error: Incompatible return value type (got "List[str]", expected "bool")

相反,我必须编写一个明确的版本,如

代码语言:javascript
复制
def check_something_explicit() -> bool:
    return len(get_something()) > 0

# or

def check_something_explicit() -> bool:
    return get_something() != []

是否有一种方法在返回语句上下文中使用隐式真实性?

EN

回答 1

Stack Overflow用户

发布于 2022-10-06 12:34:43

正如@matszwecja所述,您只需将列表转换为布尔值,即

代码语言:javascript
复制
def check_something_explicit() -> bool:
    return bool(get_something())

我认为使用隐式布尔值实际上是为了完全避免check_something_explicit函数。在您的代码中,这看起来如下所示,例如:

代码语言:javascript
复制
# instead of this
if check_something_implicit():
    # some further operations

# directly use this
if get_something():
    # some further operations
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73973734

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档