在 Python 中,字母
"f" 放在字符串前面,就创建了一个 f-string(格式化字符串字面值)。这是 Python 3.6 引入的、最简洁直观的字符串格式化方法。
简单说,
"f" 让你能在字符串里直接嵌入变量和表达式,用大括号
"{}" 包起来就行。
一、基本用法(一看就懂)
对比一下新旧方法,就知道 f-string 多方便:
name = "小明"
age = 20
# 1. 老方法:使用 % 格式化(类似C语言)
message1 = "我叫%s,今年%d岁" % (name, age)
# 2. 老方法:使用 .format()
message2 = "我叫{},今年{}岁".format(name, age)
# 3. 新方法:f-string(最直观!)
message3 = f"我叫{name},今年{age}岁"
print(message3) # 输出:我叫小明,今年20岁
✅ f-string 的优点:直接把变量名写在大括号里,不用数位置,代码更清晰!
二、
"{}" 里能放什么?
几乎任何有效的 Python 表达式都可以放在
"{}" 里:
1. 变量
price = 19.99
print(f"价格:{price}元") # 输出:价格:19.99元
2. 运算表达式
x = 10
y = 3
print(f"{x} + {y} = {x + y}") # 输出:10 + 3 = 13
print(f"{x} 的平方是 {x**2}") # 输出:10 的平方是 100
3. 调用函数/方法
name = "Alice"
print(f"名字大写:{name.upper()}") # 输出:名字大写:ALICE
print(f"长度:{len(name)}") # 输出:长度:5
4. 访问对象属性/字典/列表
person = {"name": "张三", "age": 25}
print(f"姓名:{person['name']}") # 输出:姓名:张三
items = [1, 2, 3]
print(f"第一个元素:{items[0]}") # 输出:第一个元素:1
5. 甚至用 lambda 表达式
func = lambda x: x * 2
print(f"结果:{func(5)}") # 输出:结果:10
三、高级格式控制(在
"{}" 内加
":")
在
"{}" 里用冒号
":" 可以控制显示的格式。
1. 数字格式
num = 3.1415926
# 保留2位小数
print(f"π ≈ {num:.2f}") # 输出:π ≈ 3.14
# 显示为百分比(保留1位小数)
score = 0.856
print(f"正确率:{score:.1%}") # 输出:正确率:85.6%
# 千分位分隔
big_num = 1000000
print(f"金额:{big_num:,}") # 输出:金额:1,000,000
2. 对齐与填充
text = "Hello"
# 左对齐,总宽度10,用-填充
print(f"|{text:<10}|") # 输出:|Hello |
# 右对齐,总宽度10,用*填充
print(f"|{text:>10}|") # 输出:| Hello|
# 居中对齐
print(f"|{text:^10}|") # 输出:| Hello |
3. 日期格式
from datetime import datetime
now = datetime.now()
print(f"现在时间:{now:%Y-%m-%d %H:%M:%S}")
# 输出:现在时间:2026-03-24 14:30:00
四、特殊技巧
1. 转义大括号
如果想显示 literal 的大括号,用双大括号:
print(f"{{这是一个大括号}}") # 输出:{这是一个大括号}
print(f"变量{{name}}的值是{{{name}}}") # 输出:变量{name}的值是{小明}
2. 多行 f-string
name = "李四"
age = 30
hobby = "篮球"
message = f"""
个人信息:
姓名:{name}
年龄:{age}
爱好:{hobby}
"""
print(message)
3. 在表达式中使用引号
# 如果字符串本身有引号,用不同类型的引号包裹
print(f'他说:"你好,{name}!"')
# 或者用反斜杠转义
print(f"他说:\"你好,{name}!\"")
五、注意事项
1. Python 版本:f-string 需要 Python 3.6+,如果你在用老版本,就用
".format()" 方法。
2.
"f" 必须紧挨着引号:
# 正确
f"字符串"
F"字符串" # 大写F也可以
# 错误
f "字符串" # 不能有空格
3. 性能:f-string 通常比
"%" 和
".format()" 更快,因为它在运行时直接计算。
六、一个实用例子
# 计算购物小票
items = [
{"name": "苹果", "price": 8.5, "quantity": 2},
{"name": "香蕉", "price": 3.2, "quantity": 5},
{"name": "牛奶", "price": 12.0, "quantity": 1},
]
total = 0
print("购物清单:")
print("-" * 30)
for item in items:
subtotal = item["price"] * item["quantity"]
total += subtotal
print(f"{item['name']:8} 单价:{item['price']:5.2f} × {item['quantity']} = {subtotal:6.2f}元")
print("-" * 30)
print(f"总计:{total:7.2f}元")
print(f"实付:{total*0.9:7.2f}元(9折后)")
输出效果:
购物清单:
------------------------------
苹果 单价: 8.50 × 2 = 17.00元
香蕉 单价: 3.20 × 5 = 16.00元
牛奶 单价:12.00 × 1 = 12.00元
------------------------------
总计: 45.00元
实付: 40.50元(9折后)
一句话总结:
在字符串前加
"f",然后在
"{}" 里写任意变量或表达式,Python 会自动替换为对应的值。 这是 Python 中最推荐、最清晰的字符串格式化方法!

