1

PEP8 に準拠するには、この行をどのように分割すればよいですか?

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

2 に答える 2

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()
于 2013-03-29T20:59:35.897 に答える
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

間違いなく、ステートメントを 5 行に分割する必要がある場合は、さらに多くのステートメントが必要になるでしょう。

于 2013-03-29T20:56:10.020 に答える