【问题标题】:Breaking a line of python to multiple lines?将一行python分成多行?
【发布时间】:2013-01-19 18:44:45
【问题描述】:

在 C++ 中,如果代码行太长,或者如果其中有很多检查,我喜欢拆分我的代码行。

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"

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

【问题讨论】:

  • 嗯...if 5 &lt; number &lt; 15:
  • 把`\`放在行尾
  • 代码块不是由制表符(或固定数量的空格)定义的,它们是由任何缩进定义的。另外,这不是你的问题,你的问题是换行符通常结束语句。

标签: python syntax


【解决方案1】:

风格指南 (PEP-8) 说:

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

方法一:使用括号

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

方法二:使用反斜杠

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

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

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

【讨论】:

  • 您可能想在一行中查看您的代码:if number &gt; 5 and and number &lt; 15:
  • +1 但是我很想移动顺序,所以首先显示首选括号示例,然后显示替代的有效语法。
【解决方案2】:

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

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,这看起来总是比 EOL 转义要好得多。 (但!= null 不完全是 Python :)
【解决方案3】:

pep8 标准指南似乎为括号中的内容列表缩进了新行,而对于长行,他们建议在行尾使用反斜杠。

Indenting new lines

Backslashes at the end of the line

【讨论】:

    【解决方案4】:

    您可以放置​​\ 符号来转义行尾:

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

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

    documentation on python lexical analysis中查看更多信息:

    逻辑行的结尾由记号 NEWLINE 表示。 语句不能跨越逻辑行边界,除非 NEWLINE 语法允许(例如,在复合语句之间 声明)。一条逻辑线路由一条或多条物理线路构成 遵循显式或隐式的行连接规则。

    【讨论】:

      猜你喜欢
      • 2023-01-12
      • 2021-06-03
      • 2014-07-19
      • 2011-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-24
      相关资源
      最近更新 更多