使用空格连接字符串?

时间:2017-04-11 01:39:50

标签: python

我是Python的新手,我知道你使用“+”来连接如下的字符串:

'foo' + 'bar'

今天我遇到了一些代码似乎使用空格(缩进)连接字符串[更新:错误示例,请参阅下面的编辑2 ]:

SQL = "select col1, col2 "
      "from table"

我没有发现我正在阅读的书中或网上的任何地方都提到过这个功能。有人可以向我解释一下:

  1. 在这种情况下空间意味着什么?为什么会这样?
  2. 您何时更喜欢空格而不是“+”?连接字符串跨越多行时的可读性?
  3. 编辑:感谢您的所有回复。在自己尝试代码后,它确实无效。在我离开工作之前查看代码时,我可能错过了一些细节;所以明天我会检查一下。但是,以下工作确实有效(这使我假设SQL示例在没有先验证的情况下工作):

    x = "foo" "bar"    # "foobar"
    

    编辑2:事实证明我在上面的SQL示例中错过了一对括号。实际代码如下所示:

    SQL = ("select col1, col2 "
           "from table")
    

2 个答案:

答案 0 :(得分:2)

字符串连接在python中自动运行,因此在第一个示例中不需要+。你可以这样做:

>>> "foo" "bar"
'foobar'

但是如果你想要foo和bar之间的空格,则需要将其添加到一个字符串的末尾或下一个字符串的开头。

>>> "foo " "bar"
'foo bar'

Parenthised表达式可以扩展到多行。一旦你打开一个paren,python知道忽略换行符,直到你关闭它。所以这也有效

>>> ("foo"
... "bar")
'foobar'

>>> ("foo "
... "bar")
'foo bar'

函数调用中的表达式也可以有换行符

>>> def baz(sql=''):
...     print(sql)
... 
>>> baz(sql="foo "
...     "bar")
foo bar

答案 1 :(得分:2)

来自String literals

  

字符串文字可以包含在匹配的单引号'或中   双引号"。它们也可以包含在匹配的组中   三个单引号或双引号(通常称为   三重引用的字符串)。反斜杠\字符用于转义   否则具有特殊含义的字符,例如换行符,   反斜杠本身,或引用字符。

SQL = "select col1, col2 "
      "from table"

以上代码无效;你需要一个反斜杠字符:

SQL = "select col1, col2 "\
      "from table"

字符串文字可以跨越多行。一种方法是使用三引号字符串:

s = """select col1, col2
      from table"""

但是它们不同,三引号字符串可能会为您提供额外的空格,制表符和换行符。