格式化输出:指的是将数据按照某种格式、排版或模板进行输出,以便更好的展示结果数据。
python提供了多种格式化输出的方式,包括最简单的+拼接,、以及%格式化、str.format()、f-string和模板格式化输出方式,在使用时,通常建议采用f-string方式。
1. %
格式化(旧式格式化)
这是 Python 早期版本的格式化方式,类似于 C 语言的 printf
。
语法:
示例:
| name = "Alice" |
| age = 25 |
| print("Name: %s, Age: %d" % (name, age)) |
常用占位符:
%s
:字符串
%d
:整数
%f
:浮点数
%.2f
:保留两位小数的浮点数
这是 Python 2.6 引入的格式化方式,功能更强大,可读性更好。
语法:
| "格式化字符串".format(值1, 值2, ...) |
示例:
| name = "Bob" |
| age = 30 |
| print("Name: {}, Age: {}".format(name, age)) |
高级用法:
- 按位置索引:
| print("Name: {0}, Age: {1}".format(name, age)) |
- 按关键字参数:
| print("Name: {name}, Age: {age}".format(name="Bob", age=30)) |
- 格式化数字:
| pi = 3.14159 |
| print("Pi: {0:.2f}".format(pi)) |
3. f-string(格式化字符串字面值)
这是 Python 3.6 引入的新特性,简洁高效,推荐使用。
语法:
示例:
| name = "Charlie" |
| age = 35 |
| print(f"Name: {name}, Age: {age}") |
高级用法:
- 表达式计算:
| print(f"Next year, age will be {age + 1}") |
- 格式化数字:
| pi = 3.14159 |
| print(f"Pi: {pi:.2f}") |
- 调用函数:
| print(f"Name in uppercase: {name.upper()}") |
4. 模板字符串(Template
)
适用于简单的字符串替换,安全性较高。
语法:
| from string import Template |
| Template("格式化字符串").substitute(变量名=值) |
示例:
| from string import Template |
| t = Template("Name: $name, Age: $age") |
| print(t.substitute(name="David", age=40)) |
特点:
- 使用
$变量名
作为占位符。
- 适合处理用户输入的字符串,避免安全问题。
5. 手动拼接字符串
虽然不推荐,但在简单场景下可以使用。
示例:
| name = "Eve" |
| age = 45 |
| print("Name: " + name + ", Age: " + str(age)) |
缺点:
- 代码冗长,可读性差。
- 需要手动转换类型(如
str(age)
)。
总结对比
方法 |
优点 |
缺点 |
适用场景 |
% 格式化 |
简单,类似 C 语言 |
功能有限,可读性差 |
旧代码兼容 |
str.format() |
功能强大,支持位置和关键字参数 |
语法稍复杂 |
Python 2.6+ 通用场景 |
f-string |
简洁高效,支持表达式和函数调用 |
仅支持 Python 3.6+ |
Python 3.6+ 推荐使用 |
模板字符串 |
安全性高,适合处理用户输入 |
功能较弱 |
简单字符串替换 |
手动拼接 |
直观 |
代码冗长,易出错 |
极简单场景 |
推荐
- 初学者:优先学习
f-string
,简洁易用。
- 兼容性需求:使用
str.format()
。
- 安全性需求:使用模板字符串。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Blazor Hybrid适配到HarmonyOS系统
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· 解决跨域问题的这6种方案,真香!
· 一套基于 Material Design 规范实现的 Blazor 和 Razor 通用组件库
· 数据并发安全校验处理工具类