当前位置:首页>java>写代码的“爽文”模式——f-string与表达式格式化

写代码的“爽文”模式——f-string与表达式格式化

  • 2026-08-24 09:45:25
写代码的“爽文”模式——f-string与表达式格式化
在上一章,我们学习了 % 占位符。虽然它能解决格式化的问题,但你有没有觉得它有点“啰嗦”?
我们要先在左边想好用 %s 还是 %d 。
然后在右边小心翼翼地按顺序填变量。
一旦变量多了,眼睛都要看花了。
今天,我们要介绍 Python 3.6 版本引入的一个 革命性功能 ,也是目前最推荐使用的格式化方式—— f-string 。
它最大的魔力不仅在于简便,更在于它能 对表达式进行格式化 。 简单来说: 你不仅能填变量,还能直接在字符串里算账!

01

🚀 什么是 f-string?
全称是 formatted string literals (格式化字符串字面量)。 听起来很复杂,用起来就一个字: 爽 。
语法公式:
f" {变量/表达式} "
只需要做两件事:
  • 在引号前面加一个字母 f 。
  • 在字符串中间想填数据的地方,挖个 {} ,直接把变量名写进去。
👇 对比一下你就懂了:
name = "张三"age = 18# 🐢 老派写法 (%):print("我是 %s,今年 %d 岁。" % (name, age))# 🚀 现代写法 (f-string):print(f"我是 {name},今年 {age} 岁。")
优势:
  • 不关心类型: 不需要区分 %s , %d ,系统自动处理。
  • 位置直观: 变量直接写在坑里,不会填错位置。

02

🧠 核心大招:对表达式进行格式化
f-string 最牛的地方在于,大括号 {} 里不仅仅可以放变量名,还可以放 表达式 。
❓ 什么是表达式? 简单理解: 凡是能算出一个结果的代码,都叫表达式。 比如: 1 + 1 、 age * 2 、 price > 100 等等。
这意味着,我们不再需要先把结果算出来存个变量,而是 直接在字符串里计算 !
场景 1:直接做数学运算 🧮
以前我们要打印“明年几岁”,可能需要两步:
先算 next_year = age + 1
再打印 next_year
现在只需要一步:
age = 18print(f"明年我就 {age + 1} 岁了!")# 输出:明年我就 19 岁了!print(f"3乘以5的结果是:{3 * 5}")# 输出:3乘以5的结果是:15
场景 2:直接调用函数 📞
你甚至可以在大括号里把变量转换类型,或者倒序输出。
name = "python"# 把名字大写打印出来print(f"我是:{name.upper()}") # 输出:我是:PYTHON

03

🎯 表达式 + 精度控制
还记得上一章学的 %.2f 吗?f-string 同样支持精度控制,而且写起来更符合直觉。
语法: {表达式 : 精度}
注意中间是 冒号 : 。
👇 实战演示:
price = 19.9count = 3# 直接算出总价,并保留 2 位小数print(f"单价{price},买了{count}个,总共:{price * count:.2f} 元")
运行结果: 单价19.9,买了3个,总共:59.70 元
解析:
price * count :先算出结果 59.69999...
:.2f :对算出的结果保留两位小数。

04

🛑 避坑指南:f-string 的注意事项
虽然它很好用,但有两个小细节需要注意:
  • 引号别打架: 如果 {} 里的表达式也需要用到引号(比如字符串),外面的引号和里面的引号 不能一样 。
❌ f"他说: {"Hello"}" (报错)
✅ f"他说: {'Hello'}" (里单外双,或者里双外单)
  • 版本问题: f-string 是 Python 3.6 以后才有的。如果你还在用那种十几年前的老教材(Python 2.7),是用不了这个功能的。不过现在的环境基本都支持了!

05

🔚 写在最后
总结一下今天的“屠龙技”:
  • f-string :在字符串前加 f ,用 {} 包裹内容。
  • 格式化表达式 : {} 里可以进行加减乘除、函数调用,Python 会先运算再打印。
  • 效率之王 :f-string 的运行速度比 % 和 format() 都要快,是目前 Python 中最推荐的写法。

最新文章

随机文章