當(dāng)前位置:首頁(yè) > IT技術(shù) > 編程語(yǔ)言 > 正文

百分之九十的人不知道?在Python中f-string的幾個(gè)技巧
2021-10-20 10:43:48

f-string想必很多Python用戶都基礎(chǔ)性的使用過(guò),作為Python3.6版本開(kāi)始引入的特性,通過(guò)它我們可以更加方便地向字符串中嵌入自定義內(nèi)容,但f-string真正蘊(yùn)含的功能遠(yuǎn)比大多數(shù)用戶知道的要豐富,今天我們就來(lái)一起get它們~

最基礎(chǔ)用法

f-string最基礎(chǔ)的用法很簡(jiǎn)單,如下例所示,在前綴f的字符串中向{}內(nèi)直接填入要嵌入的值、變量或計(jì)算表達(dá)式:

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


自記錄表達(dá)式

從Python3.8版本開(kāi)始,為f-string引入了自記錄表達(dá)式,使得我們可以按照下面的寫法快速輸出一些計(jì)算表達(dá)式:

'''
學(xué)習(xí)中遇到問(wèn)題沒(méi)人解答?小編創(chuàng)建了一個(gè)Python學(xué)習(xí)交流QQ群:531509025
尋找有志同道合的小伙伴,互幫互助,群里還有不錯(cuò)的視頻學(xué)習(xí)教程和PDF電子書!
'''
import math
a = 8
print(f'{math. log(8) = }')

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

多行f-string

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

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

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

在f-string中格式化日期

針對(duì)日期類型的變量,我們可以參考下面的方式,直接在f-string中快速地進(jìn)行格式化:

'''
學(xué)習(xí)中遇到問(wèn)題沒(méi)人解答?小編創(chuàng)建了一個(gè)Python學(xué)習(xí)交流QQ群:531509025
尋找有志同道合的小伙伴,互幫互助,群里還有不錯(cuò)的視頻學(xué)習(xí)教程和PDF電子書!
'''
import datetime
now = datetime.datetime.now()
print(f'{now:%Y年%m月%d號(hào)%H點(diǎn)%M分%S秒}')

#輸出:
2021年10月18號(hào)16點(diǎn)45分58秒

控制浮點(diǎn)數(shù)精度

在f-string中我們可以按照下列方式靈活地控制浮點(diǎn)數(shù)的小數(shù)位數(shù):

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

#輸出
3.142
3.14159265

標(biāo)準(zhǔn)化顯示寬度

當(dāng)我們需要對(duì)f-string打印內(nèi)容的顯示最小寬度進(jìn)行限制時(shí),譬如打印出類似表格的結(jié)構(gòu),可以參考下面的例子:

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

修改為左對(duì)齊

f-string默認(rèn)為右對(duì)齊,就像上面的例子,但我們可以像下面這樣使用<修改顯示模式為左對(duì)齊:

'''
學(xué)習(xí)中遇到問(wèn)題沒(méi)人解答?小編創(chuàng)建了一個(gè)Python學(xué)習(xí)交流QQ群:531509025
尋找有志同道合的小伙伴,互幫互助,群里還有不錯(cuò)的視頻學(xué)習(xí)教程和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

設(shè)置科學(xué)計(jì)數(shù)法格式

我們可以參考下面的方式實(shí)現(xiàn)指定位數(shù)的科學(xué)計(jì)數(shù)法顯示方式:

'''
學(xué)習(xí)中遇到問(wèn)題沒(méi)人解答?小編創(chuàng)建了一個(gè)Python學(xué)習(xí)交流QQ群:531509025
尋找有志同道合的小伙伴,互幫互助,群里還有不錯(cuò)的視頻學(xué)習(xí)教程和PDF電子書!
'''
import math
pi = math.pi
print(f'{pi*100:.10e}')

#輸出
3.1415926536e+02

控制有效數(shù)字位數(shù)

通過(guò)下面的方式,我們還可以控制所顯示數(shù)字的有效數(shù)字位數(shù),即從左開(kāi)始第一個(gè)不為0的數(shù)字往右一共顯示的個(gè)數(shù),當(dāng)位數(shù)低于整數(shù)部分時(shí)會(huì)自動(dòng)變成科學(xué)計(jì)數(shù)法格式:

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

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

會(huì)了嗎?

本文摘自 :https://blog.51cto.com/u

開(kāi)通會(huì)員,享受整站包年服務(wù)立即開(kāi)通 >