我应该如何分解这条线以使其遵守 PEP8?
assert (sum(map(lambda x: len(x),
(activities,apps,classes,users,verbs))) ==
Object.query
.filter(Object.status != ObjectStatusChoices.DELETED)
.count())
我应该如何分解这条线以使其遵守 PEP8?
assert (sum(map(lambda x: len(x),
(activities,apps,classes,users,verbs))) ==
Object.query
.filter(Object.status != ObjectStatusChoices.DELETED)
.count())
如果您将内容重写为单独的行,则永远不会出现这种情况。
它还可以让你给中间值起有意义的名字(我不得不猜测,但大概你知道它们),甚至可以将一些逻辑重构为函数(你也可以给它起有意义的名字)。
例如,不改变任何逻辑,甚至重写任何逻辑(除了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()
首先,请记住,对此没有单一的“正确的 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
当然,如果您发现自己的语句需要分成五行,那么您可能需要更多语句。