打破一行python到多行?

时间:2013-01-19 18:44:46

标签: python syntax

在C ++中,我喜欢分解我的代码行,如果它们太长,或者if 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"

我不认为这是可能的,但它会很酷!

4 个答案:

答案 0 :(得分:30)

样式指南说:

  

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

方法1:使用括号

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

方法2:使用反斜杠

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

方法3:使用反斜杠+缩进以提高可读性

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

答案 1 :(得分: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"}

答案 2 :(得分:3)

pep8标准指南似乎为括号中的事物列表缩进了新行,而对于长行,它们建议在行尾添加反斜杠。

Indenting new lines

Backslashes at the end of the line

答案 3 :(得分:1)

您可以放置​​\符号以逃避行尾:

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

在某些情况下(例如在括号内),您不需要特殊符号来逃避行尾。

documentation on python lexical analysis中了解详情:

  

逻辑行的结尾由令牌NEWLINE表示。   除NEWLINE之外,语句不能跨越逻辑行边界   语法允许(例如,在复合语句之间)   语句)。逻辑线由一个或多个物理构成   通过遵循显式或隐式的行连接规则来行。