将一行Python代码分成多行的方法?

18

在C++中,如果一行代码过长或者一个if语句有很多检查的话,我喜欢把它们分成几行。

if (x == 10 && y < 20 && name == "hi" && obj1 != null) 
    // Do things 

// vs

if (x == 10
    && y < 20
    && name == "hi"
    && obj1 != null)
{
    // Do things
}

AddAndSpawnParticleSystem(inParticleEffectName, inEffectIDHash, overrideParticleSystems, mAppliedEffects[inEffectIDHash], inTagNameHash);
// vs
AddAndSpawnParticleSystem(inParticleEffectName, inEffectIDHash, overrideParticleSystems, 
    mAppliedEffects[inEffectIDHash], inTagNameHash);

在Python中,代码块是由缩进而不是在行尾添加“;”来定义的。

if number > 5 and number < 15:
    print "1"

Python是否支持多行?比如...

if number > 5 
and number < 15:
    print "1"

我不认为这是可能的,但如果可以实现的话,那将非常酷!


6
好的,如果数字在5和15之间: - Ry-
3
在行末加上 \\ - Kabie
3
代码块不是由制表符(或固定数量的空格)定义的,而是由任何缩进定义的。另外,这并不是你在这里遇到的问题,你的问题是换行符通常用于结束语句。 - user395760
4个回答

43

样式指南(PEP-8)表明:

在括号、方括号和花括号内使用 Python 的隐式行继续是包装长行的首选方式。长行可以通过将表达式放在括号中并将其分成多行来打破。应优先使用它们,而不是使用反斜杠进行行继续。确保适当缩进连续行。在二元运算符周围断开的首选位置是在运算符之后,而不是之前。

方法一:使用括号

if (number > 5 and
        number < 15):
    print "1"

方法2:使用反斜线

if number > 5 and \
number < 15:
    print "1"

方法三:使用反斜杠加缩进以实现更好的可读性

if number > 5 and \
        number < 15:
    print "1"

你可能想要查看你的代码中的一行:if number > 5 and and number < 15: - user1632861
+1 不过我会倾向于改变顺序,先展示首选的括号示例,然后再展示其他同样有效的语法。 - Christopher Hackett

12

如果您将表达式用括号括起来,就可以将其分解成多行:

if (x == 10
    and y < 20
    and name == "hi"
    and obj1 is not None):
    # do something

用于创建列表或字典的括号或花括号同样适用:

mylist = [1, 2, 3, 4,
          5, 6, 7, 8]

mydict = {1: "a", 2: "b",
          3: "c", 4: "d"}

1
+1,这样看起来比EOL转义要好得多。(但!= null不太像Python :) - Ry-

3

pep8标准指南似乎建议在括号中列出一系列内容时缩进新行,而对于长行,他们建议在行末使用反斜杠。

缩进新行

行末反斜杠


1
您可以使用反斜杠符号\来转义行末符号:
if number > 5 \
   and number < 15:
    print '1'

在某些情况下(例如在括号内),您将不需要特殊符号来转义行尾。
请参阅Python词法分析文档以获取更多信息:

逻辑行的结尾由标记NEWLINE表示。语句不能跨越逻辑行边界,除非语法允许使用NEWLINE(例如,在复合语句中的语句之间)。通过遵循显式或隐式的行连接规则,可以从一个或多个物理行构造逻辑行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接