在Python 3.6+中引入的f-string不仅是字符串格式化的利器,更隐藏着许多高阶用法。本文将带你解锁5个让代码更简洁高效的f-string技巧,覆盖数据处理、排版展示和调试等场景。


一、智能数字分隔符

痛点:大额数值难以快速识别量级

population = 1425775850
print(f"中国人口:{population:_}人")  # 中国人口:1_425_775_850人
print(f"GDP总量:{9876543210.5:,.2f}美元")  # GDP总量:9,876,543,210.50美元
  • ,适用于常规显示,_更符合代码书写习惯
  • 支持与浮点数精度控制组合使用(.2f

二、排版三剑客:对齐与填充

应用场景:生成报表/控制台输出美化

item = "APPLE"
price = 9.99
print(f"[{item:_^15}]")  # [_____APPLE_____]
print(f"{'价格:':#>15}{price:<8.2f}")  # ##########价格:9.99    
  • >右对齐 <左对齐 ^居中
  • 可自定义填充符号(单字符)
  • 支持数值与字符串混合排版

三、时间格式化终极方案

优势:无需调用strftime方法

from datetime import datetime
now = datetime.now()
print(f"当前时间:{now:%Y-%m-%d %H:%M:%S}")  # 当前时间:2023-08-15 14:30:45
print(f"会议时间:{now:%I:%M %p}")         # 会议时间:02:30 PM
  • 直接嵌入datetime对象
  • 支持所有标准格式符(%A星期名称、%B月份名称等)

四、数值精确控制二合一

典型场景:金融数据展示

revenue = 123456789.9876
print(f"季度营收:{revenue:,.2f}元")  # 季度营收:123,456,789.99元
print(f"占比:{0.35782:.1%}")        # 占比:35.8%
  • 千分位分隔符与精度控制组合
  • 百分比自动转换(.1%保留1位小数百分比)

五、调试神器:表达式自描述

效率提升:告别print(f"a={a}")时代

x, y = 5, 3
print(f"{x + y=}")  # x + y=8
print(f"{x ** 2=}") # x ** 2=25
  • 自动捕获表达式文本和计算结果
  • 特别适用于复杂表达式调试
  • Python3.8+版本特性

进阶技巧组合

data = {
    "timestamp": datetime.now(),
    "value": 987654321.456,
    "status": "OK"
}

print(f"""
系统状态报告:
{'-'*30}
时间 | {data['timestamp']:%Y-%m-%d %H:%M:%S}
数值 | {data['value']:,.3f}
状态 | {data['status']:_^10}
{'-'*30}
""")

最佳实践建议

  1. 优先使用千分位分隔符增强可读性
  2. 对齐填充时统一宽度规范
  3. 时间格式遵循ISO 8601标准(%Y-%m-%dT%H:%M:%S)
  4. 金融数值保留2位小数+千分位
  5. 生产环境慎用调试表达式