写代码的“爽文”模式——f-string与表达式格式化
在上一章,我们学习了 % 占位符。虽然它能解决格式化的问题,但你有没有觉得它有点“啰嗦”?今天,我们要介绍 Python 3.6 版本引入的一个 革命性功能 ,也是目前最推荐使用的格式化方式—— f-string 。它最大的魔力不仅在于简便,更在于它能 对表达式进行格式化 。 简单来说: 你不仅能填变量,还能直接在字符串里算账!全称是 formatted string literals (格式化字符串字面量)。 听起来很复杂,用起来就一个字: 爽 。- 在字符串中间想填数据的地方,挖个 {} ,直接把变量名写进去。
name = "张三"age = 18# 🐢 老派写法 (%):print("我是 %s,今年 %d 岁。" % (name, age))# 🚀 现代写法 (f-string):print(f"我是 {name},今年 {age} 岁。")
- 不关心类型: 不需要区分 %s , %d ,系统自动处理。
f-string 最牛的地方在于,大括号 {} 里不仅仅可以放变量名,还可以放 表达式 。❓ 什么是表达式? 简单理解: 凡是能算出一个结果的代码,都叫表达式。 比如: 1 + 1 、 age * 2 、 price > 100 等等。这意味着,我们不再需要先把结果算出来存个变量,而是 直接在字符串里计算 !age = 18print(f"明年我就 {age + 1} 岁了!")# 输出:明年我就 19 岁了!print(f"3乘以5的结果是:{3 * 5}")# 输出:3乘以5的结果是:15
你甚至可以在大括号里把变量转换类型,或者倒序输出。name = "python"# 把名字大写打印出来print(f"我是:{name.upper()}") # 输出:我是:PYTHON
还记得上一章学的 %.2f 吗?f-string 同样支持精度控制,而且写起来更符合直觉。price = 19.9count = 3# 直接算出总价,并保留 2 位小数print(f"单价{price},买了{count}个,总共:{price * count:.2f} 元")
运行结果: 单价19.9,买了3个,总共:59.70 元price * count :先算出结果 59.69999...- 引号别打架: 如果 {} 里的表达式也需要用到引号(比如字符串),外面的引号和里面的引号 不能一样 。
✅ f"他说: {'Hello'}" (里单外双,或者里双外单)- 版本问题: f-string 是 Python 3.6 以后才有的。如果你还在用那种十几年前的老教材(Python 2.7),是用不了这个功能的。不过现在的环境基本都支持了!
- f-string :在字符串前加 f ,用 {} 包裹内容。
- 格式化表达式 : {} 里可以进行加减乘除、函数调用,Python 会先运算再打印。
- 效率之王 :f-string 的运行速度比 % 和 format() 都要快,是目前 Python 中最推荐的写法。