微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

符合PEP8的方式来换行['item'] ['item']查找链

如何解决符合PEP8的方式来换行['item'] ['item']查找链

E501:行太长(88个> 79个字符)

if true:
    if true:
        if true:
            record = self.content['data']['country_name']['city_name']['postal_address']

我的尝试失败:

if true:
    if true:
        if true:
            record = self.content['data']['country_name'] \
                                 ['city_name']['postal_address']

这给出了一个错误 E211'['行:4,列:58

前的空白

我正在使用:http://pep8online.com

解决方法

有几种方法,一种可能(我希望)是添加中间变量(具有一些有意义的名称)。

if True:
    if True:
        if True:
            data = self.content['data']
            record = data['country_name']['city_name']['postal_address']

此外,三个嵌套的if可能是一些重构(可能带有一些辅助功能)的不错选择,这也会减少行长。

另一种选择:使用括号(PEP8建议在反斜杠上也使用括号)

        record = (
            self.content
            ['data']
            ['country_name']
            ['city_name']
            ['postal_address']
        )
,

这不是很漂亮,但是如果您只想让自动样式检查器感到高兴......

if true:
    if true:
        if true:
            record = self.content['data']['country_name'
                                          ]['city_name']['postal_address']
,

首先,考虑是否可以将两个if子句与and运算符合并。

但是,假设每个if子句都有不同的条件,则可以将其放置在方法中,在其中可以添加一个或多个将提前退出的保护子句:

def get_content(content):
    if not True:
        return

    if not True:
        return

    if not True:
        return

    return content['data']['country_name']['city_name']['postal_address']


record = get_content(content)

您还可以考虑创建中间变量,这可能有助于使其更易读和更短。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。