加入收藏 | 设为首页 | 会员中心 | 我要投稿 大庆站长网 (https://www.0459zz.com/)- 科技、智能边缘云、事件网格、云计算、站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – PEP 8和列表理解

发布时间:2021-01-17 03:35:16 所属栏目:Python 来源:互联网
导读:我似乎对PEP 8遇到了一些问题. 我正在使用长度超过79个字符的列表理解.因此,我的文本编辑器正在尖叫着对我做些什么,并且在编码时要注意一下. return [(i[user_id], i[id]) for i in j[collection] if i and i[user_id]] 所以,我试图打破界限,但现在它抱怨我的

我似乎对PEP 8遇到了一些问题.

我正在使用长度超过79个字符的列表理解.因此,我的文本编辑器正在尖叫着对我做些什么,并且在编码时要注意一下.

return [(i['user_id'],i['id']) for i in j['collection'] if i and i['user_id']]

所以,我试图打破界限,但现在它抱怨我的换行是出于视觉目的.

return [(i['user_id'],i['id']) for i in j['collection']
    if i and i['user_id']]

在这样的泡菜中,男人该做什么?

编辑:基于答案,在这种情况下我选择了列表理解的可读性,现在它对读者更有意义:

tracks = set()

for track in json['collection']:
    if track and track['user_id']:
        tracks.add((track['user_id'],track['id']))

解决方法

使用pep8时常识适用.如果你不能在80字符内拟合一行逻辑,那么几乎总是表明这条线必须被重写.在这种情况下确实如此,因为我甚至无法开始尝试理解那条线应该做什么.

但是如果你将它移动到一个更易读的格式,那么不仅你的行数会增加,而且你的可读性水平也会提高,这样就可以为你提供很多适当的变量名称,比如用户而不是i.这将使您在未来的维护变得更加容易,更不用说其他人是否需要查看它.

所以把这个例子放到实际的代码中,这就是我用它做的事情(使用一个很好的函数换行来使样本更容易阅读!):

j = {'collection': [{'id': 1,'user_id': 1}]}

def get_qualified_users(users):
    qualified_users = []
    for user in users:
        if user and user['user_id']:
            qualified_users.append((user['user_id'],user['id']))
    return qualified_users

print(get_qualified_users(j['collection']))

您可以轻松地将其复制/粘贴到您的interpetor中,看它是否有效.更重要的是 – 它非常容易维护和跟踪,在密封功能中封装了清晰的api.

(编辑:大庆站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读