如何在Python中断行链式调用的方法?
我有一行这样的代码(别怪我命名不规范,这不是我写的):
subkeyword = Session.query(
Subkeyword.subkeyword_id, Subkeyword.subkeyword_word
).filter_by(
subkeyword_company_id=self.e_company_id
).filter_by(
subkeyword_word=subkeyword_word
).filter_by(
subkeyword_active=True
).one()
我觉得它看起来不太好(不太容易读),但在这种情况下,我没有更好的办法来限制每行字符到79个。有没有更好的方法来换行(最好不要用反斜杠)?
9 个回答
21
我个人的选择是:
subkeyword = Session.query( Subkeyword.subkeyword_id, Subkeyword.subkeyword_word, ).filter_by( subkeyword_company_id=self.e_company_id, subkeyword_word=subkeyword_word, subkeyword_active=True, ).one()
72
在这种情况下,使用换行符比使用开放括号更好。当方法名称变得很长,或者方法开始接受参数时,这种风格的必要性就更加明显了:
subkeyword = Session.query(Subkeyword.subkeyword_id, Subkeyword.subkeyword_word) \
.filter_by(subkeyword_company_id=self.e_company_id) \
.filter_by(subkeyword_word=subkeyword_word) \
.filter_by(subkeyword_active=True) \
.one()
PEP 8 是一套代码风格指南,目的是让代码既实用又美观。你可以大胆地违反任何让代码看起来丑陋或难以阅读的 PEP 8 规则。
不过,如果你经常觉得自己和 PEP 8 发生冲突,那可能说明你的代码在可读性上有问题,而不仅仅是空格的选择 :-)
324
你可以使用额外的括号:
subkeyword = (
Session.query(Subkeyword.subkeyword_id, Subkeyword.subkeyword_word)
.filter_by(subkeyword_company_id=self.e_company_id)
.filter_by(subkeyword_word=subkeyword_word)
.filter_by(subkeyword_active=True)
.one()
)