gpt4 book ai didi

python - Python中的链式方法调用缩进样式

转载 作者:IT老高 更新时间:2023-10-28 21:09:52 29 4
gpt4 key购买 nike

通过阅读 PEP-8,我知道您应该将右括号与函数调用中的最后一个参数放在同一行:

ShortName.objects.distinct().filter(
product__photo__stockitem__isnull=False)

可能最好避免使用长表达式。但是,如果不希望这样做,您将如何处理多个链式方法调用?右括号应该换行吗?

ShortName.objects.distinct().filter(
product__photo__stockitem__isnull=False
).values_list('value', flat=True)

无参数方法呢? 如何在不引用中间返回值的情况下将它们写成多行?

ShortName.objects.distinct(
).filter().values() # looks ugly

更新:有一个重复的问题 How to break a line of chained methods in Python? . accepted answer建议使用 jQuery 中熟悉的样式,以点开始每一行。作者没有提供任何理由或权威引用,所以我想确认一下这种风格或替代方案。

最佳答案

这种情况下,换行符比开括号更受欢迎。

ShortName.objects.distinct() \
.filter().values() # looks better

随着方法名称变长以及方法开始接受参数,对这种风格的需求变得更加明显:

return some_collection.get_objects(locator=l5) \
.get_distinct(case_insensitive=True) \
.filter(predicate=query(q5)) \
.values()

PEP 8 旨在以一定程度的常识和对实用和美观的眼光来解释。愉快地违反任何导致丑陋或难以阅读的代码的 PEP 8 准则。

话虽如此,如果您经常发现自己与 PEP 8 不一致,这可能表明存在超出您选择的空白的可读性问题 :-)

关于python - Python中的链式方法调用缩进样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8683178/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com