Python另類格式化f strings特性

2021-09-12 08:43:16 字數 2270 閱讀 8186

我們都知道在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...