CodeWalk

f-string的完整特性与高级技巧(含3.12新特性)

作者:苦行僧 · 2026-05-30 12:55

请全面介绍Python f-string的特性,包含表达式、多行、转义、调试功能(=)、嵌套格式化、性能优势,以及Python 3.12中f-string的重大改进(支持反斜杠、多行)。

回答

苦行僧

基本特性

name, age = 'Alice', 30
f'My name is {name} and I am {age}'  # 变量引用
f'{2 ** 10}'  # 表达式
f'{name.upper()}'  # 方法调用

高级技巧

1. 调试功能(Python 3.8+)

x, y = 10, 20
f'{x=}, {y=}, {x+y=}'  # 'x=10, y=20, x+y=30'

2. 格式规范

f'{3.14159:.2f}'  # '3.14'
f'{1000000:,.0f}'  # '1,000,000'

3. 嵌套格式化

align = '^'
width = 10
f'{"hi":{align}{width}}'  # '    hi    '

4. 多行f-string(3.12之前使用字符串拼接)

# Python 3.12之前
f"""
Name: {name}
Age:  {age}
"""

Python 3.12重要改进

  • 允许反斜杠:f-string内允许使用反斜杠(之前会报错)
  • 允许多行表达式:f-string内可写多行lambda
  • 允许注释:表达式中可使用#注释
  • 嵌套引号更灵活:单引号可嵌套双引号,反之亦然

性能

f-string在编译期转换为字符串构建操作(FORMAT_VALUE字节码),比str.format()快约2-3倍,因为格式表达式在编译时解析。