1. 程式人生 > 其它 >百分之九十的人不知道?在Python中f-string的幾個技巧

百分之九十的人不知道?在Python中f-string的幾個技巧

f-string想必很多Python使用者都基礎性的使用過,作為Python3.6版本開始引入的特性,通過它我們可以更加方便地向字串中嵌入自定義內容,但f-string真正蘊含的功能遠比大多數使用者知道的要豐富,今天我們就來一起get它們~

最基礎用法

f-string最基礎的用法很簡單,如下例所示,在字首f的字串中向{}內直接填入要嵌入的值、變數或計算表示式:

print(f'1+1 = {2}')
#輸出:1+1 = 2

a=1 + 1
print(f'1+1 = {a}')
#輸出:1+1 = 2

print(f'1+1 = {1+1}')
#輸出:1+1 = 2

自記錄表示式

從Python3.8版本開始,為f-string引入了自記錄表示式,使得我們可以按照下面的寫法快速輸出一些計算表示式:

import math
a = 8
print(f'{math. log(8) = }')

#輸出:math. log(8) = 2.0794415416798357

多行f-string

通過最外層包裹小括號,我們可以像下面這樣非常靈活地撰寫多行f-string:

a = 1
b = 2
c = 3
s = (
    f'{a = }\n'
    f'{b = }\n'
    f'{c = }\n'
)
print(s)

#輸出:
a = 1
b = 2
c = 3

在f-string中格式化日期

針對日期型別的變數,我們可以參考下面的方式,直接在f-string中快速地進行格式化:

'''
學習中遇到問題沒人解答?小編建立了一個Python學習交流群:531509025
尋找有志同道合的小夥伴,互幫互助,群裡還有不錯的視訊學習教程和PDF電子書!
'''
import datetime
now = datetime.datetime.now()
print(f'{now:%Y年%m月%d號%H點%M分%S秒}')

#輸出:
2021年10月18號16點45分58秒

控制浮點數精度

在f-string中我們可以按照下列方式靈活地控制浮點數的小數位數:

import math
pi = math.pi
print(f'{pi: .3f}')
print(f'{pi:.8f}')

#輸出
3.142
3.14159265

標準化顯示寬度

當我們需要對f-string列印內容的顯示最小寬度進行限制時,譬如打印出類似表格的結構,可以參考下面的例子:

for x in range(1,11):
    print(f'{x:02}|{x**2:3}/{x**5:6}')

#輸出
01|  1/     1
02|  4/    32
03|  9/   243
04| 16/  1024
05| 25/  3125
06| 36/  7776
07| 49/ 16807
08| 64/ 32768
09| 81/ 59049
10|100/100000

修改為左對齊

f-string預設為右對齊,就像上面的例子,但我們可以像下面這樣使用<修改顯示模式為左對齊:

'''
學習中遇到問題沒人解答?小編建立了一個Python學習交流群:531509025
尋找有志同道合的小夥伴,互幫互助,群裡還有不錯的視訊學習教程和PDF電子書!
'''
for x in range(1,11):
    print(f'{x:<2}|{x**2:<3}|{x**5:<6}')

#輸出
1 |1  |1     
2 |4  |32    
3 |9  |243   
4 |16 |1024  
5 |25 |3125  
6 |36 |7776  
7 |49 |16807 
8 |64 |32768 
9 |81 |59049 
10|100|100000

設定科學計數法格式

我們可以參考下面的方式實現指定位數的科學計數法顯示方式:

import math
pi = math.pi
print(f'{pi*100:.10e}')

#輸出
3.1415926536e+02

控制有效數字位數

通過下面的方式,我們還可以控制所顯示數字的有效數字位數,即從左開始第一個不為0的數字往右一共顯示的個數,當位數低於整數部分時會自動變成科學計數法格式:

a=1312.3123123123123
print(f'{a:.10g}')
#輸出:1312.312312

a=1312.3123123123123
print(f'{a:.3g}')
#輸出:1.31e+03

會了嗎?