这条长Python系列的正确PEP8练习是什么?

时间:2013-03-29 20:50:40

标签: python python-2.7 pep8

我应该如何细分这条线以使其遵守PEP8?

    assert (sum(map(lambda x: len(x), 
                    (activities,apps,classes,users,verbs))) ==
            Object.query
                  .filter(Object.status != ObjectStatusChoices.DELETED)
                  .count())

2 个答案:

答案 0 :(得分:6)

如果将内容重写为单独的行,则永远不会出现。

它还允许你为中间值赋予有意义的名称(我必须猜测,但可能你知道它们),或者甚至将逻辑比特重构为函数(你也可以 给出有意义的名字。)

例如,不要更改任何逻辑,甚至不要重写任何逻辑(除了使用len代替lambda x: len(x)):

lengths = map(len, (activities,apps,classes,users,verbs))
db_query = Object.query.filter(Object.status != ObjectStatusChoices.DELETED)
assert sum(lengths) == db_query.count()

答案 1 :(得分:1)

首先,请记住,没有单一的“正确的PEP8答案”。我更喜欢:

in_mem = sum(len(x) for x in (activities,apps,classes,users,verbs))
in_db = Object.query.filter(
                        Object.status != ObjectStatusChoices.DELETED
                        ).count()
assert in_mem == in_db

当然,如果你发现自己需要分成五行语句,你可能需要更多的陈述。