Python 中的 F 字串教學:初學者指南
更新日期: 2024 年 9 月 19 日
在 Python 編碼中,字串格式化是日常工作中,非常常見的操作。
為了讓字串格式化更簡潔和直觀,Python 3.6 引入了 F 字串(格式化字串字面值)。
F 字串讓我們可以直接在字串中嵌入表達式,而無需使用繁瑣的格式化方法。
本文將帶您深入了解 F 字串的使用方法,並通過實例來幫助初學者掌握這項強大的工具。
F 字串的基本概念
F 字串是指在字串前添加 f 或 F 前綴,然後在字串中使用大括號 {} 包含變數或表達式。
Python 會在執行時,自動將大括號中的內容,替換為對應的值。
基本語法:
f"文字 {變數} 文字 {表達式}"
示例:
name = "Alice"
age = 25
print(f"我的名字是 {name},我今年 {age} 歲。")
輸出:
我的名字是 Alice,我今年 25 歲。
F 字串的優點
- 簡潔明瞭:直接在字串中嵌入變數或表達式,代碼更易讀。
- 高效:執行速度比傳統的格式化方法更快。
- 靈活性強:可以在大括號內執行任意的 Python 表達式。
F 字串的使用方法
插入變數
直接將變數名放在大括號內。
username = "Bob"
print(f"歡迎,{username}!")
輸出:
歡迎,Bob!
計算表達式
可以在大括號內進行計算。
a = 10
b = 5
print(f"{a} 加 {b} 等於 {a + b}")
輸出:
10 加 5 等於 15
調用函數
可以在大括號內調用函數或方法。
import math
radius = 3
print(f"半徑為 {radius} 的圓面積是 {math.pi * radius ** 2:.2f}")
輸出:
半徑為 3 的圓面積是 28.27
字串格式化
可以使用格式化,規範來控制輸出格式。
number = 123.456789
print(f"數字保留兩位小數:{number:.2f}")
輸出:
數字保留兩位小數:123.46
日期時間格式化
from datetime import datetime
now = datetime.now()
print(f"現在時間是:{now:%Y-%m-%d %H:%M:%S}")
輸出:
現在時間是:2023-10-05 15:30:45
格式化規範詳解
格式化浮點數
- 保留小數位數
- .:小數點。
- 3:保留 3 位小數。
- f:表示格式化為浮點數(
float
)。
pi = 3.1415926
print(f"圓周率約為:{pi:.3f}")
輸出:
圓周率約為:3.142
- 填充與對齊
- ::引入格式化規範。
- >:表示右對齊。
- 5:指定寬度為 5 個字符。
num = 42
print(f"數字右對齊:{num:>5}")
print(f"數字左對齊:{num:<5}")
print(f"數字居中對齊:{num:^5}")
輸出:
數字右對齊: 42
數字左對齊:42
數字居中對齊: 42
格式化整數
- 二進位、八進位、十六進位表示
- 不指定格式化規範,直接輸出數字的默認表示方式,即十進位。
- b:表示將數字格式化為二進位。
- o:表示將數字格式化為八進位。
- x:表示將數字格式化為十六進位(小寫字母),
X
(大寫X
)則輸出大寫字母。
number = 255
print(f"十進位:{number}")
print(f"二進位:{number:b}")
print(f"八進位:{number:o}")
print(f"十六進位:{number:x}")
輸出:
十進位:255
二進位:11111111
八進位:377
十六進位:ff
F 字串中的特殊字符
大括號的使用
如果需要在字串中使用大括號 {
或 }
,需要使用雙大括號進行跳脫。
print(f"這是一個大括號:{{}}")
輸出:
這是一個大括號:{}
換行與縮排
在長字串中使用換行符 \n。
name = "Charlie"
message = f"你好,{name}!\n歡迎來到 Python 的世界。"
print(message)
輸出:
你好,Charlie!
歡迎來到 Python 的世界。
與其他字串格式化方法的比較
百分號 % 格式化
name = "David"
age = 30
print("我的名字是 %s,我今年 %d 歲。" % (name, age))
str.format() 方法
name = "Eve"
age = 28
print("我的名字是 {},我今年 {} 歲。".format(name, age))
F 字串格式化
name = "Frank"
age = 35
print(f"我的名字是 {name},我今年 {age} 歲。")
總結:
- 可讀性:F 字串更直觀,可讀性更高。
- 性能:F 字串在大多數情況下性能更優。
- 靈活性:可以直接嵌入表達式和函數調用。
實際應用案例
動態生成訊息
user = {"username": "Grace", "messages": 5}
print(f"你好,{user['username']}!你有 {user['messages']} 條新訊息。")
輸出:
你好,Grace!你有 5 條新訊息。
日誌記錄
level = "WARNING"
message = "磁碟空間不足"
print(f"[{level}] {message}")
輸出:
[WARNING] 磁碟空間不足
生成表格
data = [
{"name": "Henry", "score": 88},
{"name": "Isabella", "score": 92},
{"name": "Jack", "score": 85},
]
print(f"{'姓名':<10}{'分數':>5}")
for item in data:
print(f"{item['name']:<10}{item['score']:>5}")
輸出:
姓名 分數
Henry 88
Isabella 92
Jack 85
注意事項
Python 版本要求
F 字串僅在 Python 3.6 及以上版本可用。
安全性考量
避免在 F 字串中嵌入未經驗證的用戶輸入,可能會引發安全問題。
# 風險示例
user_input = "__import__('os').system('rm -rf /')"
print(f"{user_input}")
性能考慮
在需要高度性能的情況下,F 字串的效率優勢更加明顯。
結論
F 字串為 Python 的字串格式化提供了一種簡潔、高效的方式。
透過直接在字串中嵌入變數和表達式,代碼變得更加易讀和維護。
對於初學者來說,掌握 F 字串的使用將大大提升編程效率。
建議:
- 多加練習:嘗試將現有的格式化代碼改寫為 F 字串。
- 注意版本:確保您的 Python 版本在 3.6 以上。
- 結合格式化規範:善用格式化規範,控制輸出格式。