kat*_*ugh 95 python django coding-style pep8
从阅读PEP-8开始,我得知你应该将右括号放在与函数调用中最后一个参数相同的行上:
ShortName.objects.distinct().filter(
product__photo__stockitem__isnull=False)
Run Code Online (Sandbox Code Playgroud)
也许,长表达最好避免.但是,如果这是不受欢迎的,你将如何进行多个链式方法调用?闭幕式是否应该换新线?
ShortName.objects.distinct().filter(
product__photo__stockitem__isnull=False
).values_list('value', flat=True)
Run Code Online (Sandbox Code Playgroud)
那些无参数方法呢?如何在不引用中间返回值的情况下在多行上编写它们?
ShortName.objects.distinct(
).filter().values() # looks ugly
Run Code Online (Sandbox Code Playgroud)
更新:如何在Python中打破一系列链式方法有一个重复的问题?.该接受的答案建议开始以点每个新线的熟悉从jQuery的风格.作者没有提供任何理由或权威参考,所以我想得到关于这种风格或替代方案的确认.
Ray*_*ger 156
这种情况下,行连续字符优先打开括号.
ShortName.objects.distinct() \
.filter().values() # looks better
Run Code Online (Sandbox Code Playgroud)
当方法名称变得更长并且方法开始采用参数时,对这种风格的需求变得更加明显:
return some_collection.get_objects(locator=l5) \
.get_distinct(case_insensitive=True) \
.filter(predicate=query(q5)) \
.values()
Run Code Online (Sandbox Code Playgroud)
PEP 8旨在通过常识和对实用和美丽的关注来解释.高兴地违反任何导致丑陋或难以阅读的代码的PEP 8指南.
话虽这么说,如果你经常发现自己与PEP 8不一致,这可能表明存在超出你选择的空白的可读性问题:-)
小智 55
我认为最好是使用()来强制连接线,并执行此操作:
(ShortName.objects.distinct() # Look ma!
.filter(product__photo__stickitem__isnull=False) # Comments are allowed
.values_list('value', flat=True))
Run Code Online (Sandbox Code Playgroud)
它并不理想,但我喜欢它在视觉上突出,并使得调用链变得有些明显.它允许行尾注释,\换行不会.
| 归档时间: |
|
| 查看次数: |
42638 次 |
| 最近记录: |