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}")

輸出:

105 等於 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 以上。
  • 結合格式化規範:善用格式化規範,控制輸出格式。

延伸閱讀

Similar Posts

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *