Python使用f-string格式化字符串字面量的完整教學(xué)
Python 中的 f-string(格式化字符串字面量)是自 Python 3.6 起引入的一種現(xiàn)代、高效且直觀的字符串格式化方法。它通過在字符串前添加 f 或 F 前綴,并在字符串內(nèi)部使用花括號 {} 嵌入變量或表達(dá)式,使得動(dòng)態(tài)生成字符串變得異常簡潔和可讀。
一、f-string 的核心優(yōu)勢與基本用法
f-string 的設(shè)計(jì)旨在解決傳統(tǒng)格式化方法(如 % 操作符和 str.format())的冗長與易錯(cuò)問題。其核心優(yōu)勢在于語法簡潔、執(zhí)行高效,并且支持在運(yùn)行時(shí)直接求值嵌入的任何有效 Python 表達(dá)式。
基礎(chǔ)用法是直接在 {} 中放入變量名:
name = "Alice"
age = 30
greeting = f"Hello, my name is {name} and I am {age} years old."
print(greeting) # 輸出: Hello, my name is Alice and I am 30 years old.
你不僅可以嵌入變量,還可以嵌入復(fù)雜的表達(dá)式,包括算術(shù)運(yùn)算和函數(shù)調(diào)用:
x = 10
y = 20
result = f"{x} + {y} = {x + y}" # 輸出: 10 + 20 = 30
def square(n):
return n * n
num = 5
squared = f"The square of {num} is {square(num)}." # 輸出: The square of 5 is 25.
二、進(jìn)階格式化技巧
f-string 的強(qiáng)大之處在于其豐富的格式化選項(xiàng),通過在大括號內(nèi)使用 : 后跟格式說明符來實(shí)現(xiàn)。
控制數(shù)字格式:可以輕松指定浮點(diǎn)數(shù)精度、千位分隔符或顯示進(jìn)制。
pi = 3.141592653589793
print(f"Pi is approximately {pi:.2f}.") # 輸出: Pi is approximately 3.14.
number = 1234567.89
print(f"Total sales: ${number:,.2f}") # 輸出: Total sales: $1,234,567.89
num = 255
print(f"Hex: {num:#x}") # 輸出: Hex: 0xff
文本對齊與填充:可以控制字符串的寬度、對齊方式和填充字符。
name = "Bob"
print(f"{name:>10}") # 右對齊,寬度10,輸出: ` Bob`
print(f"{name:_<10}") # 左對齊,用_填充,輸出: `Bob_______`
print(f"{name:*^10}") # 居中對齊,用*填充,輸出: `***Bob****`
格式化日期時(shí)間:直接對 datetime 對象使用格式說明符。
from datetime import datetime
now = datetime.now()
print(f"Today's date is {now:%Y-%m-%d %H:%M:%S}") # 輸出: Today's date is 2025-12-30 14:30:45
三、其他重要特性與注意事項(xiàng)
多行 f-string:可以通過三引號或隱式拼接來創(chuàng)建多行字符串。
name = "Bob"
age = 25
bio = f"""
Name: {name}
Age: {age}
Profession: Software Engineer
"""
調(diào)試支持(Python 3.8+):使用 = 修飾符可以快速輸出變量名及其值,便于調(diào)試。
x = 10
print(f"{x=}") # 輸出: x=10
處理特殊字符:
- 若要在字符串中顯示花括號本身,需使用雙花括號
{{和}}進(jìn)行轉(zhuǎn)義。 - 大括號內(nèi)的表達(dá)式不能包含反斜杠
\進(jìn)行轉(zhuǎn)義。若需使用引號,應(yīng)確保內(nèi)外引號不同(例如,外層用雙引號,內(nèi)層用單引號)。
性能優(yōu)勢:由于其內(nèi)部實(shí)現(xiàn)機(jī)制是編譯時(shí)解析為高效字節(jié)碼,而非運(yùn)行時(shí)進(jìn)行復(fù)雜的解析或函數(shù)調(diào)用,f-string 的執(zhí)行速度通常顯著快于 % 格式化與 str.format() 方法。
四、與舊式格式化方法的對比
在 f-string 出現(xiàn)之前,Python 主要依賴 % 格式化與 str.format() 方法。
% 格式化:語法類似 C 語言,在復(fù)雜場景下可讀性差且易出錯(cuò),官方已不推薦。
message = "Hello, %s. You are %s." % (name, age)
str.format() 方法:比 % 更靈活,支持位置參數(shù)和關(guān)鍵字參數(shù),但在多變量時(shí)代碼仍顯冗長。
message = "Hello, {}. You are {}.".format(name, age)
相比之下,f-string 語法最直觀,將變量和表達(dá)式直接嵌入字符串上下文,大大提升了代碼的可讀性和編寫效率。除非需要兼容 Python 3.6 之前的版本,否則 f-string 是現(xiàn)代 Python 開發(fā)中字符串格式化的首選方法。
五、總結(jié)
總而言之,Python 的 f-string 通過其 f"文本 {表達(dá)式}" 的簡潔語法,完美融合了表達(dá)力、可讀性與高性能。它支持從簡單的變量替換到復(fù)雜的表達(dá)式求值、精細(xì)的格式控制以及日期處理,是構(gòu)建動(dòng)態(tài)字符串最現(xiàn)代和推薦的方式。
到此這篇關(guān)于Python使用f-string格式化字符串字面量的完整教學(xué)的文章就介紹到這了,更多相關(guān)Python格式化字符串字面量內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python深度學(xué)習(xí)之FastText實(shí)現(xiàn)文本分類詳解
FastText是一種典型的深度學(xué)習(xí)詞向量的表示方法,它非常簡單通過Embedding層將單詞映射到稠密空間,然后將句子中所有的單詞在Embedding空間中進(jìn)行平均,進(jìn)而完成分類操作2022-09-09
python獲取命令行輸入?yún)?shù)列表的實(shí)例代碼
今天小編就為大家分享一篇python獲取命令行輸入?yún)?shù)列表的實(shí)例代碼,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-06-06
python tkinter圖形界面代碼統(tǒng)計(jì)工具(更新)
這篇文章主要為大家詳細(xì)介紹了python tkinter圖形界面代碼統(tǒng)計(jì)工具,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-09-09
pycocotools介紹以及在windows10下的安裝過程
這篇文章主要介紹了pycocotools介紹以及在windows10下的安裝過程,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02
Python開發(fā)之QT解決無邊框界面拖動(dòng)卡屏問題(附帶源碼)
朋友在學(xué)習(xí)QT的過程中,都會(huì)遇到各種問題,今天就QT無邊框拖動(dòng)花屏問題給大家詳細(xì)介紹,究竟該如何解決呢,下面通過實(shí)例代碼和圖文相結(jié)合給大家詳細(xì)介紹,需要的朋友參考下吧2021-05-05
利用Python腳本實(shí)現(xiàn)批量將圖片轉(zhuǎn)換為WebP格式
Python語言的簡潔語法和庫支持使其成為圖像處理的理想選擇,本文將介紹如何利用Python實(shí)現(xiàn)批量將圖片轉(zhuǎn)換為WebP格式的腳本,WebP作為一種高效的圖像格式,能顯著減小文件大小,優(yōu)化網(wǎng)絡(luò)傳輸,需要的朋友可以參考下2025-06-06
django跳轉(zhuǎn)頁面?zhèn)鲄⒌膶?shí)現(xiàn)
這篇文章主要介紹了django跳轉(zhuǎn)頁面?zhèn)鲄⒌膶?shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
Python數(shù)據(jù)分析之Python和Selenium爬取BOSS直聘崗位
今天教各位小伙伴怎么用Python和Selenium爬取BOSS直聘崗位,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)python爬蟲和數(shù)據(jù)分析的小伙伴有很好地幫助,需要的朋友可以參考下2021-05-05

