2015-01-04 52 views
0

我在教自己的Python,看不到這兩個例子之間的巨大差異,除了字符串格式提供的額外格式選項(例如%r)。Python 2.7:%字符串格式與調用變量外的字符串?

name = "Bob" 
print "Hi, my name is %s." % name 
print "Hi, my name is", name 

是否有任何理由,一般爲什麼你更喜歡一個在另一個? 我意識到.format()是現在這樣做的首選方式,但這只是爲了更好地理解Python如何操作。

+1

逗號','運算符在輸出文本中隱式添加空格,但可以使用'%'運算符控制此行爲。 – ZdaR

+0

我複製粘貼你的代碼和兩個輸出是相同的。 –

回答

2

兩個(其沒有其他人似乎是描述)之間的主要區別是這樣的:

print "Hi, my name is %s." % name 

這裏,新的字符串被從兩個字符串構成(字符串文字和值爲name)。插值(%運算符)是一種您可以在任何地方使用的操作,例如,在變量賦值或函數調用中,而不僅僅是在print語句中。然後打印這個新鑄造的字符串(然後丟棄,因爲它沒有給出名稱)。

print "Hi, my name is", name 

在這裏,兩個字符串是簡單地一個接一個地打印出來的,其間有一個空格。 print聲明正在做所有的工作。沒有字符串操作被執行並且沒有新的字符串被創建。

1

它是節目選擇:

1)使用澄清類型的代碼讀取器,但是對於所使用的每個附加的變量,程序員將需要花費時間修改在兩個地方

2)使用,含蓄因此讀者將不得不回頭瞭解他的類型。但它很快,如果代碼直觀寫入刪除了大量的維修burdon

所以是的,這是維護保持平衡,維護,可讀性和便利性的選擇。

1

區別在於逗號是打印語句的一部分,而不是字符串。試圖在別處使用它,例如將一個字符串綁定到一個名字,不會做你想要的。