如何在 Python 中打破很长的代码行? [复制]

Posted

技术标签:

【中文标题】如何在 Python 中打破很长的代码行? [复制]【英文标题】:How to break very long code lines in Python? [duplicate] 【发布时间】:2020-01-18 20:33:45 【问题描述】:

如何通过缩短每一行来使我的 python 代码更漂亮?例如:我有一个很长的 if 语句,我想缩短 => 将它的长度分成几行:

if (imgA.shape[0] != imgB.shape[0]) and (imgA.shape[1] != imgB.shape[1]) and (imgA.shape[2] != imgB.shape[2]):

我想要这样的东西:

    if (imgA.shape[0] != imgB.shape[0]) and 
      (imgA.shape[1] != imgB.shape[1]) and
      (imgA.shape[2] != imgB.shape[2]):

但是我得到一个语法错误。有人吗?

【问题讨论】:

【参考方案1】:

只比较数组本身?

if imgA.shape != imgB.shape:

或者如果其余元素很重要:

if imgA.shape[0:2] != imgB.shape[0:2]:

【讨论】:

好的,显然是个坏例子。但是,您如何将其拆分为多行?【参考方案2】:

你可以把它放在括号里:

if ((imgA.shape[0] != imgB.shape[0]) and 
    (imgA.shape[1] != imgB.shape[1]) and 
    (imgA.shape[2] != imgB.shape[2])):
    #do stuff

【讨论】:

这行得通。谢谢!【参考方案3】:
if (
    (imgA.shape[0] != imgB.shape[0]) and 
    (imgA.shape[1] != imgB.shape[1]) and
    (imgA.shape[2] != imgB.shape[2])
):
    #do something

我通常依靠括号括起参数来换行。这会在 Jupyter 笔记本中传递语法。

【讨论】:

虽然我不喜欢使用中间的缩进,而且我觉得代码越分段越容易理解,@Derek_Eden 的答案可能更正确。【参考方案4】:

不是一个确切的答案,但一个好主意是为每个变量分配名称:

check_shape_0 = imgA.shape[0] != imgB.shape[0]
check_shape_1 = imgA.shape[1] != imgB.shape[1]
check_shape_2 = imgA.shape[2] != imgB.shape[2]

if (check_shape_0) and (check_shape_1) and (check_shape_2):
    #Do something

重命名的布尔值会让未来的代码读者更清楚地了解 if 语句中发生了什么。

通过为布尔值选择合适的变量名,if 语句几乎可以像英语一样阅读,这使得代码阅读起来非常舒适。

而较短的名称使您的 if 语句更小。

【讨论】:

【参考方案5】:

您可以使用\ 将同一语句分成多行:

if (imgA.shape[0] != imgB.shape[0]) and \
    (imgA.shape[1] != imgB.shape[1]) and \
        (imgA.shape[2] != imgB.shape[2]):

【讨论】:

这很好。谢谢! 乐于助人。 :)

以上是关于如何在 Python 中打破很长的代码行? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

我将如何在 python 的 while 循环中打破一个函数? [复制]

如何连接匹配模式的行?

在Eclipse中如何让很长的代码分行显示

由于引导代码,无法隐藏很长的菜单项

如何使用长正则表达式进行行延续? [复制]

Excel - 如何沿行增加公式引用