首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >简化嵌套的Python代码

简化嵌套的Python代码
EN

Stack Overflow用户
提问于 2018-07-23 00:18:10
回答 1查看 66关注 0票数 1

我已经编写了一个小辅助函数,用于检查导航项目是否处于活动状态。代码按照我的预期工作,但它看起来有点嵌套。有人知道如何简化它吗?

代码语言:javascript
复制
def url_name_active(view_name, name, exact=True, exclude=None):
    exclude_names = exclude.split(',') if exclude else None

    if exclude:
        for exclude_name in exclude_names:
            if exclude_name in view_name:
                return None

    if exact and name == view_name or \
            not exact and name in view_name:
        return 'active'
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-23 00:22:45

根据您注意行的时长,第一个条件可以简化为未嵌套的

代码语言:javascript
复制
if exclude and any(exclude_name in view_name for exclude_name in exclude.split(',')):
    return None

整个方法可以归结为(或多或少不可读的)两行代码

代码语言:javascript
复制
if not (exclude and any(exclude_name in view_name for exclude_name)) and (exact and name == view_name or not exact and name in view_name):
    return 'active'

您提到您最终想要检查某个东西是否是'active'。根据上面的观察,该函数在以下情况下返回'active'

代码语言:javascript
复制
not (exclude and any(exclude_name in view_name for exclude_name)) and (exact and name == view_name or not exact and name in view_name)

因此,如果您只关心该表达式的真值,您可以简单地

代码语言:javascript
复制
return not (exclude and any(exclude_name in view_name for exclude_name)) and (exact and name == view_name or not exact and name in view_name)

并且没有任何条件句。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51466996

复制
相关文章

相似问题

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