18

我们越来越多地使用链式函数调用:

value = get_row_data(original_parameters).refine_data(leval=3).transfer_to_style_c()

它可以很长。为了节省代码中的长行,首选哪个?

value = get_row_data(
    original_parameters).refine_data(
    leval=3).transfer_to_style_c()

或者:

value = get_row_data(original_parameters)\
       .refine_data(leval=3)\
       .transfer_to_style_c()

我觉得使用反斜杠很好\,然后.function换行。这使得每个函数调用都有自己的行,易于阅读。但这听起来不是很多人喜欢的。当代码出现细微的错误时,当很难调试时,我总是开始担心它可能是backslash (\).

引用Python样式指南:

通过将表达式括在括号中,可以将长行分成多行。这些应该优先使用反斜杠来继续行。确保适当缩进续行。打破二元运算符的首选位置是在运算符之后,而不是在它之前。

4

3 回答 3

24

由于左括号,我倾向于使用以下内容,它避开了不推荐的内容: \

value = (get_row_data(original_parameters)
         .refine_data(level=3)
         .transfer_to_style_c())

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

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

message = ("This is a very long"
           " one-line message put on many"
           " source lines.")

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

Python 的代码格式很好

于 2012-08-12T08:12:49.703 回答
2

这个选项怎么样:

value = get_row_data(original_parameters,
            ).refine_data(leval=3,
                ).transfer_to_style_c()

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

于 2012-08-12T08:08:55.130 回答
1

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

坚持你已经拥有的任何项目的风格指南——如果没有说明,那么尽可能与风格的其余代码库保持一致。

否则,选择一种你喜欢的风格并坚持下去 - 并让其他人知道,如果在一行上不能合理地阅读(或者你希望描述它),你会喜欢这样编写链式函数调用。

于 2012-08-12T08:21:21.787 回答