根据PEP 8:
使用悬挂式缩进时,应采用以下注意事项;第一行应该没有参数,应该使用进一步的缩进来明确区分自己作为延续线。
假设我有类似的东西:
my_object = VeryLongClassName(long_function_name(arg1, arg2), arg3)
超过79个字符。我应该这样打破:
my_object = VeryLongClassName(
long_function_name(arg1, arg2), arg3)
还是这个?
my_object = VeryLongClassName(long_function_name(
arg1, arg2), arg3)
答案 0 :(得分:2)
我使用以下方法,可以在各种情况下很好地扩展,并且可以保持线条短 - 从而使代码更容易在视觉上扫描。
my_object = VeryLongClassName(
long_function_name(arg1, arg2),
arg3,
)
这种方法有一些额外的好处:
在定义large data structures(列表,dicts甚至JSON)时广泛使用它。使用模仿数据布局样式的编码样式非常方便。代码只是另一种形式的数据,对吗?
它适用于大多数文本编辑器,它们从面向行的角度来看世界。如果函数或构造函数的每个参数都在一个单独的行上,代码重构很容易。
它的应用是基于规则的,纯机械的。我从来不必为如何缩进代码而烦恼。
因此,它看起来很整洁,管理原则立即明确。作为对比点,PEP 8中看到的indenting examples看起来像是一个大杂烩,因此无法提供非常明确的指导。
另一种策略是使用局部便利变量,尤其是在需要在方法中多次使用长名称的情况下。尽管创建短助记符会使代码更加模糊,但它通常有助于提高可读性,前提是您的代码已经组织在相当小的函数或方法中 - 再次因为它往往增强了对代码进行可视化扫描的便利性。 / p>
vlcn = VeryLongClassName
lfn = long_function_name
x = vlcn(lfn(arg1, arg2), arg3)
y = vlcn(lfn(arg4, arg5), arg6)