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

Dog*_*kci 1 python pep8 python-2.7

我应该如何分解这条线,以便它遵守PEP8?

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

aba*_*ert 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()
Run Code Online (Sandbox Code Playgroud)

  • @Dougal:好点.当然,对此的解决方案是显而易见的:将整个检查移动到一个函数中,并且`assert check_lengths()`(这也意味着你可以使它成为一个后置条件或不可重用的,等等). (2认同)