2017-04-11 69 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""" 

但他們是不同的,三引號字符串可能給你額外的空格,製表符和換行符。