2012-06-19 25 views

回答

7

一般來說,你要使用的第二個表格(.format())這是新的,而另一個最終會消失(當時是在某一點上至少意向 - 見注意以下)。

引述了Python What’s New In Python 3.0文檔:

的內置字符串格式化操作的新系統替換% 字符串格式化操作。 (但是,%運算符仍然支持 ;它將在Python 3.1中被棄用,並在稍後的時間從 語言中刪除。)請閱讀PEP 3101以獲取全文。

.format()以來一直提供至少Python 2.6中

更多有關Advanced String Formatting (PEP 3101)

@Duncan還提到一個reference to a thread,討論是否/當%基於格式將在下面的評論中消失。而且@NedBatchelder有這個明確的引用來自Python 3.2 docs:「... there are no current plans to deprecate printf-style formatting.

+1

該引用來自Python 3.0的發行註記,因此非常古老。請注意,Python 3.1並未棄用%格式化,我認爲在可預見的將來會做出更早的格式化(但我無法立即找到相關參考)的決定。 – Duncan

+1

嗯,這是我記得的:http://python.6.n6.nabble.com/formatting-depracation-td1861167.html尼克Coghlan寫道:「沒有一個系統的方式來檢測和轉換%風格爲 {} - 我們還沒有想出如何以向後兼容的方式將很多 更高級別的API轉換爲新的方案 (這是爲什麼像日誌記錄這樣的模塊仍然默認爲%風格, {}風格只能通過選項和包裝對象使用)。「 – Duncan

+0

@Duncan我最近瀏覽了那些文檔,因爲我自己開始使用v3.x。我只記得我提到的引用,如果你可以找到其他引用讓我知道,我會用它更新我的答案。謝謝。 – Levon

3

%-style趨向於更簡潔,但也更有限。 .format()有一定的優勢:

  1. 允許用戶定義的類提供自己的格式化標誌,
  2. 可以訪問對象的屬性

雖然用浮漂,沒有那些你的榜樣是一個優勢。

這兩種技術都會繼續工作,所以您使用的是由您決定的。曾經有人認爲%-formatting會從Python 3中移除,但這不再是事實。見3.2 docs

由於新的字符串格式化語法是更靈活,處理的元組和字典自然,建議對新代碼。但是,目前還沒有計劃放棄printf樣式的格式。

+0

你有關於%-formatting堅持不同/更確切的鏈接?如果是這樣,我希望能夠將這添加到任何未來的答案。我最近剛開始深入研究v3和.format()函數,因爲我認爲%-formatting(我從C編程日知道)會消失。謝謝。 – Levon

+0

@Levon:我添加了一個鏈接到答案。 –

+0

謝謝..這絕對是非常確定的:-) – Levon