今天給大家帶來一個,Python3.6的格式化字符串的使用方法

今天給大家帶來一個,Python3.6的格式化字符串的使用方法

Python 3.6 提供了一種新的字符串格式化方法:f-strings,不僅比其他格式化方式更易讀,更簡潔,更不容易出錯,而且它們也更快!

看完本文後,你將瞭解如何以及為何要使用 f-strings。

首先,我們先了解下現有的字符串格式化方法。

在 Python 3.6 之前,字符串格式化方法主要有兩種:%格式化 和 str.format()。下面我們簡單看下它們的使用方法,以及侷限。

1 %-格式化

% 格式化方法從 Python 剛開始時就存在了,堪稱「一屆元老」,但是 Python 官方文檔中並不推薦這種格式化方式:

1.1 如何使用 %格式化

一般使用方式,要插入多個變量的話,必須使用元組:

今天給大家帶來一個,Python3.6的格式化字符串的使用方法

1.2 %格式化的缺陷

上面的代碼示例看起來還能讀,但是,一旦開始使用多個參數和更長的字符串,你的代碼將很快變得不那麼容易閱讀:

今天給大家帶來一個,Python3.6的格式化字符串的使用方法

可以看出,這種格式化並不是很好,因為它很冗長並且容易導致錯誤,比如沒有正確顯示元組或字典。

不過還好我們還有 str.format()。

2 str.format()

Python 2.6 中引入了 str.format() 格式化方法:https://docs.python.org/3/library/stdtypes.html#str.format。

2.1 str.format() 的使用

str.format() 是對 %格式化 的改進,它使用普通函數調用語法,並且可以通過 __format__() 方法為對象進行擴展。

使用 str.format() 時,替換字段用大括號進行標記:

今天給大家帶來一個,Python3.6的格式化字符串的使用方法

並且可以通過索引來以其他順序引用變量:

今天給大家帶來一個,Python3.6的格式化字符串的使用方法

或者可以這樣:

今天給大家帶來一個,Python3.6的格式化字符串的使用方法

從字典中讀取數據時還可以使用 **:

今天給大家帶來一個,Python3.6的格式化字符串的使用方法

確實,str.format() 比 %格式化高級了一些,但是它還是有自己的缺陷。

2.2 str.format() 的缺陷

在處理多個參數和更長的字符串時仍然可能非常冗長,麻煩!看看這個:

今天給大家帶來一個,Python3.6的格式化字符串的使用方法

3 f-Strings

還好,現在我們有了 f-Strings,它可以使得字符串格式化更加容易。

f-strings 是指以 f 或 F 開頭的字符串,其中以 {} 包含的表達式會進行值替換。

下面從多個方面看下 f-strings 的使用方法,看完後,我相信你會對「人生苦短,我用 Python」有更深地贊同~

3.1 f-Strings 使用方法

今天給大家帶來一個,Python3.6的格式化字符串的使用方法

是不是很簡潔?!還有更牛叉的!

因為 f-strings 是在運行時計算的,那麼這就意味著你可以在其中放置任意合法的 Python 表達式,比如:

運算表達式

今天給大家帶來一個,Python3.6的格式化字符串的使用方法

  • 調用函數

還可以調用函數:

今天給大家帶來一個,Python3.6的格式化字符串的使用方法

也可以直接調用內置函數:

今天給大家帶來一個,Python3.6的格式化字符串的使用方法

在類中使用

今天給大家帶來一個,Python3.6的格式化字符串的使用方法

多行 f-string

今天給大家帶來一個,Python3.6的格式化字符串的使用方法

這裡需要注意,每行都要加上 f 前綴,否則格式化會不起作用:

今天給大家帶來一個,Python3.6的格式化字符串的使用方法

4 速度對比

其實,f-string 裡的 f 也許可以代表 fast,它比 %格式化方法和 str.format() 都要快:

今天給大家帶來一個,Python3.6的格式化字符串的使用方法

運行結果:

今天給大家帶來一個,Python3.6的格式化字符串的使用方法

很明顯,f-string 是最快的,並且語法是最簡潔的,是不是迫不及待地要試試了?

5 注意事項

5.1 引號的處理

可以在字符串中使用各種引號,只要保證和外部的引號不重複即可。

以下使用方式都是沒問題的:

今天給大家帶來一個,Python3.6的格式化字符串的使用方法

那如果字符串內部的引號和外部的引號相同時呢?那就需要 \ 進行轉義:

今天給大家帶來一個,Python3.6的格式化字符串的使用方法

5.2 括號的處理

若字符串中包含括號 {},那麼你就需要用雙括號包裹它:

今天給大家帶來一個,Python3.6的格式化字符串的使用方法

可以看出,使用三個括號包裹效果一樣。

當然,你可以繼續增加括號數目,看下有什麼其他效果:

今天給大家帶來一個,Python3.6的格式化字符串的使用方法

額,那麼多括號,看著有點暈了...

5.3 反斜槓

上面說了,可以用反斜槓進行轉義字符,但是不能在 f-string 表達式中使用:

今天給大家帶來一個,Python3.6的格式化字符串的使用方法

你可以先在變量裡處理好待轉義的字符,然後在表達式中引用變量:

今天給大家帶來一個,Python3.6的格式化字符串的使用方法

5.4 註釋符號

不能在表達式中出現 #,否則會報出異常;

今天給大家帶來一個,Python3.6的格式化字符串的使用方法

總結

經過以上的講解,是不是發現 f-string 非常簡潔實用、可讀性高,而且不易出錯,可以嘗試切換到 f-string 嘍~

f-string 也體現出了 Python 的奧義:

今天給大家帶來一個,Python3.6的格式化字符串的使用方法

在學習Python的過程中會遇到很多問題,為了解決這些問題小編自己創了個QQ群813622576,在裡面大家可以一起交流學習,方便大家解決自己不懂的知識,讓大家一起進步,群內也有我自己整理的一些資源讓大家學習!

今天給大家帶來一個,Python3.6的格式化字符串的使用方法


分享到:


相關文章: