我們都知道在python中字串格式化常用的有百分號操作符(%)和str.format()方式,前者最早是在python 2.5版本以前所支援的,之後便推出了後者。而在python3.6發布之後,在pep 498提案或建議書中提出了一種新型字串格式和機制,被稱為(literal string interpolation) 字串插值,也就是f-strings,他的特點是進行字串格式化時都是以 f 字母開頭的。
而不得不說的是,f-strings的執行速度很快。比%-string和str.format()這兩種格式化方法都快得多。
我們先來乙個直觀感受,就是把過去幾個字串格式化方法和新方法做個比較。
name =
'anders'
gender =
'male'
str1 =
'%s is a %s'
%(name, gender)
print
(str1)
str2 =
'{} is a {}'
.format
(name, gender)
print
(str2)
str3 = f' is a '
str3
# 輸出如下:
# anders is a male
# anders is a male
# 'anders is a male'
在上述例子中,可以看到f-strings方法直接以f字母開頭,後面緊跟你要輸入的字串內容編輯,無論是單引號,雙引號,三個單引號括起來都可以,然後把要輸出的格式化變數內容對號入座即可。
以表示式方式傳遞
當然不僅僅是傳遞普通變數,還可以是乙個函式方法,因為f-string實際上是在執行時計算的表示式,為了更加說明這點,引用pep 498官方提到的內容。
從字串中提取的表示式在f字串出現的上下文中計算。這意味著表示式可以完全訪問本地和全域性變數。可以使用任何有效的python表示式,包括函式和方法呼叫。所以我們來看看如果把乙個函式方法並呼叫它的例子。
def
math_test
(num1, num2)
:return num1 * num2
result = f'the result is '
result
# 輸出如下:
# 'the result is 6'
我們可以看到,如上例子中,先前定義了乙個math_test函式方法,在f-string字面量格式化中直接就像平時呼叫函式一樣給函式傳遞引數,就能得到對應的結果,並把結果替換到先前指定的位置。
多行f如果我們想要輸出的格式本身是以段落形式存在的,存在分行,那可以直接用三個單引號將整段內容括起來,隨後輸出的字串格式也包含了段落分隔符。
name =
'anders'
age =
25pet =
'dogs'
info = f'''my name is ,
my age is ,
i like .'''
info
# 輸出內容:
# 'my name is anders,\nmy age is 25,\ni like dogs.'
如果是另一種情況,假設輸入的字串拼接很長,占用了螢幕的邊寬,只需輸入反斜槓"\"跟在折行內容的末尾去做處理即可。
name =
'anders'
age =
25pet =
'dogs'
info = f'my name is
, \my age is
, \i like
.'info
# 輸出內容:
# 'my name is anders, my age is 25, i like dogs.'
效能方面
引用pep 498中網友翻譯提到的:
f -string提供了一種方法,可以在字串文字中嵌入表示式,使用最小的語法。應該注意的是,f-string實際上是在執行時計算的表示式,而不是乙個常量值。在python源**中,f-string是乙個文字字串,字首為f,其中包含括號內的表示式。表示式被替換為它們的值。總之,在python 3.6之後 f 字串用法非常好用,在效能上,在容錯率上,在外觀上,都是值得推薦使用的。
python 格式化和format格式化
格式 name flags width precision typecode name 可選,用於選擇指定的key flags 可選,可提供的值有 右對齊,整數前加正號,負數前加負號 左對齊,正數錢無符號,負數前加負號 空格 右對齊 正數前加空格,負數前加負號 0 右對齊,正數前無符號,負數前加負號...
Python 格式化字元
字串格式化操作符 只適用於字串型別,語法如下 format string string to convert format string為格式標記字串,形式為 cdoe string to convert 為要格式化的字串,如果是兩個以上,則需要用小括號括起來。格式化符號 說明 r 轉換成字元 as...
python 格式化操作
格式化操作 本質 對映 常見用途 對字串格式化輸出 對數值進行精度處理,進製轉換等。兩種方式 1.用 格式符來格式化 2.用str.format 方法格式化 1.用 格式符 a.格式化字串。例 s s s fu sheng shabi fu sheng shabi b.格式化數值。例 2f 3.14...