如何用Python编写多行命令

Wes*_*ley 3 python syntax

我想使用以下 Python 代码:

initialMinute = int(input('In the initial hour of {0}:00, enter the minute of arrival'.format(initialHour))
Run Code Online (Sandbox Code Playgroud)

它有点长,所以我不想把它写成一行。我如何分解该语句,使其包含两行?

Jon*_*ice 5

在 Python 中,您实际上不需要连接(+操作)来组合字符串。相邻行上的文字字符串将本质上连接起来:

initialHour = 4
initialMinute = int(input('In the initial hour of '
                          '{0}:00, enter the minute of arrival: '
                          .format(initialHour)))
Run Code Online (Sandbox Code Playgroud)

这实际上比使用操作更有效+,因为操作将在“编译时”而不是“运行时”完成。性能并不是这里的关键问题。

但是像这样的字符串连接有一些相当精确的(读起来:挑剔和烦人的)规则。了解可以使用括号使这种“隐式连接”更加可靠会有所帮助。这可以帮助您格式化代码以使其更加简单和可读。例如:

initialHour = 4
question = ('In the initial hour of '
            '{0}:00, enter the minute of arrival: '
           ).format(initialHour)
initialMinute = int(input(question))
Run Code Online (Sandbox Code Playgroud)

如果没有括号,字符串连接可能会违反 Python 源代码缩进规则。但括号表示“我们还没有完成!继续等待。” 将右括号放在format 方法所在的行上有助于将格式方法连接到现在组合的字符串。

如果您束手无策,您还可以使用反斜杠字符 ( \) 来结束行,以表示“该行继续!” 这可能会变得混乱并且有自己的一套陷阱,但在紧要关头可以提供帮助。


您可能还不需要这个,但是如果您可以安装外部模块,我的文本数据模块旨在解决此类问题。有了它,您不必担心字符串连接的细节,而是将文本放入多行字符串中,并让模块计算出详细信息。例如:

from textdata import *

question = textline("""
    In the initial hour of
    {0}:00, enter the minute of arrival:
""")
Run Code Online (Sandbox Code Playgroud)

question那么将是:

'In the initial hour of {0}:00, enter the minute of arrival:'
Run Code Online (Sandbox Code Playgroud)

对于这一根弦来说,就太过分了。但是,如果您的程序中包含大量文本(尤其是涉及 HTML、XML 或 SQL 等缩进文本),事情就会变得更容易。