首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于` `chained`‘函数调用的Python样式

用于` `chained`‘函数调用的Python样式
EN

Stack Overflow用户
提问于 2012-08-12 07:51:07
回答 3查看 5.3K关注 0票数 19

越来越多的人使用链式函数调用:

代码语言:javascript
复制
value = get_row_data(original_parameters).refine_data(leval=3).transfer_to_style_c()

可能会很长。若要在代码中保存长行,优先选择哪一行?

代码语言:javascript
复制
value = get_row_data(
    original_parameters).refine_data(
    leval=3).transfer_to_style_c()

或者:

代码语言:javascript
复制
value = get_row_data(original_parameters)\
       .refine_data(leval=3)\
       .transfer_to_style_c()

我觉得使用反斜杠\并将.function放到新行是很好的。这使得每个函数调用都有自己的行,易于阅读。但这听起来并不是很多人所喜欢的。当代码发生微妙的错误时,当很难调试时,我总是开始担心它可能是backslash (\)之后的一个空格或什么东西。

引用Python样式指南:

长行可以用括号中的表达式包装在多行上。这些应该优先使用,而不是使用反斜杠行继续。确保适当地缩进续行。打破二进制运算符的首选位置是在运算符之后,而不是在运算符之前。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-08-12 08:12:49

我倾向于选择以下几种,避免使用不推荐 \,这要归功于括号的开头:

代码语言:javascript
复制
value = (get_row_data(original_parameters)
         .refine_data(level=3)
         .transfer_to_style_c())

这种语法的一个优点是每个方法调用都在自己的行上。

类似的\-less结构对于字符串文本也很有用,因此它们不会超出建议的每行限制79个字符:

代码语言:javascript
复制
message = ("This is a very long"
           " one-line message put on many"
           " source lines.")

这是一个字符串文本,它由Python解释器高效地创建(这比字符串之和要好得多,后者在内存中创建多个字符串,并多次复制它们,直到获得最终字符串)。

Python的代码格式很好。

票数 24
EN

Stack Overflow用户

发布于 2012-08-12 08:08:55

那么这个选项呢:

代码语言:javascript
复制
value = get_row_data(original_parameters,
            ).refine_data(leval=3,
                ).transfer_to_style_c()

注意,如果没有其他参数,逗号是多余的,但我保持它们的一致性。

票数 2
EN

Stack Overflow用户

发布于 2012-08-12 08:21:21

不引用我自己的偏好(尽管请参阅对您的问题的评论:)或替代答案是:

坚持你已经拥有的任何项目的风格指导方针--如果没有声明,那么在风格上尽可能保持与其他代码库的一致性。

否则,选择一种你喜欢的风格并坚持下去--让其他人知道这就是为什么你会喜欢用链式的函数调用来写,如果没有合理的可读性的话(或者不管你想怎么描述它)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11920583

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档