2017-04-11 39 views
-3

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

'foo' + 'bar' 

今天我遇到了一些代码,它似乎来连接使用空间(缺口)的字符串来[更新:错误的榜样,看到编辑2以下]:

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

我没有找到这个功能得到了这本书我读或网络上的任何地方提及。有人可以请我解释一下:

  1. 这个空间的意思是什么?它为什么有效?
  2. 什么时候你比较喜欢“+”以上的空格?连接字符串时可读性是否跨越多行?

编辑:感谢您的回复。在我自己试着编码之后,确实没有奏效。我在上班前查看代码时可能错过了一些细节;所以我明天会看看。但是,以下没有工作(这让我假设SQL实例作品,未经核实在前):

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

编辑2:原来,我错过了在上面的SQL例如一对括号。实际的代码如下所示:所以在你的第一个例子无需对+

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

回复:1.它不起作用。 :) –

+3

你确定这是确切的代码?看看这个,它可能会有所帮助:http://stackoverflow.com/questions/10660435/pythonic-way-to-create-a-long-multi-line-string – Rhexis

+1

参见http://stackoverflow.com/ questions/18842779/string-concatenation-without-operator-in-python,它有一个关于相邻字符串文字周围规则的文档链接。 –

回答

2

字符串连接自动工作在蟒蛇。你可以这样做:

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

但如果你想foo和酒吧之间的空间,或者需要添加一个字符串的结尾或下月初。

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

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

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

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

而且在函数调用表达式也可以有换行符

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

String literals

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

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

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

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

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

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

但他们是不同的,三引号字符串可能给你额外的空格,制表符和换行符。