什麼
"%.2f" % x
和
"{:.2f}".format(x)
之間的區別
我對我應該使用哪種方法以及哪種版本的Python感到困惑。
什麼
"%.2f" % x
和
"{:.2f}".format(x)
之間的區別
我對我應該使用哪種方法以及哪種版本的Python感到困惑。
一般來說,你要使用的第二個表格(.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.
」
該引用來自Python 3.0的發行註記,因此非常古老。請注意,Python 3.1並未棄用%格式化,我認爲在可預見的將來會做出更早的格式化(但我無法立即找到相關參考)的決定。 – Duncan
嗯,這是我記得的:http://python.6.n6.nabble.com/formatting-depracation-td1861167.html尼克Coghlan寫道:「沒有一個系統的方式來檢測和轉換%風格爲 {} - 我們還沒有想出如何以向後兼容的方式將很多 更高級別的API轉換爲新的方案 (這是爲什麼像日誌記錄這樣的模塊仍然默認爲%風格, {}風格只能通過選項和包裝對象使用)。「 – Duncan
@Duncan我最近瀏覽了那些文檔,因爲我自己開始使用v3.x。我只記得我提到的引用,如果你可以找到其他引用讓我知道,我會用它更新我的答案。謝謝。 – Levon
%-style趨向於更簡潔,但也更有限。 .format()有一定的優勢:
雖然用浮漂,沒有那些你的榜樣是一個優勢。
這兩種技術都會繼續工作,所以您使用的是由您決定的。曾經有人認爲%-formatting會從Python 3中移除,但這不再是事實。見3.2 docs:
由於新的字符串格式化語法是更靈活,處理的元組和字典自然,建議對新代碼。但是,目前還沒有計劃放棄printf樣式的格式。
感謝您的鏈接! – Vassilis