Python format 函数是字符串内置格式化方法,作用是把变量数值按照指定规则填充到字符串占位符位置,实现动态拼接文本,相比老式百分号格式化,format 函数写法更灵活,支持位置索引命名参数数字精度对齐填充字符等高级设置,是 Python2.6 之后推出的标准格式化方案,日常输出报表日志计算结果的时候使用非常频繁,很多新手容易混淆 format 和 f-string,二者底层都是字符串格式化,f-string 是 Python3.6 新增的简写语法,format 函数兼容性更好,低版本 Python 也可以正常运行,核心原理就是字符串里面写大括号占位符,调用 format 的时候传入参数,参数会依次替换占位符,还可以自定义数字小数位补零左右对齐。之所以推荐掌握 format 函数,是因为它解决了百分号格式化参数顺序死板的问题,使用位置索引可以重复调用同一个变量,命名参数可读性更强,同时支持格式控制语法,在冒号后面写格式符,控制小数位数宽度填充字符千分位,这些能力是普通加号拼接字符串做不到的,加号拼接只能简单连接,不能做数字格式化对齐补零,所以做数据输出的时候,format 函数优势非常明显。学习第一步认识基础占位符写法,第二步掌握位置索引传参,第三步学习命名参数传参,第四步掌握冒号后面格式控制语法,第五步练习小数保留位数补零对齐,第六步对比 format 和百分号格式化 f-string 的差异,第七步处理常见报错,比如占位符数量和传入参数不匹配索引越界。掌握 format 函数之后,就可以灵活生成动态文本,满足控制台输出文件写入日志打印等场景需求。
format 函数基础用法
1 基础顺序占位符 字符串里面写多个大括号,format 传入参数按照顺序依次填充
2 位置索引占位符 大括号里面写数字索引,比如 0 1,可以重复使用同一个参数,不需要重复传值
3 命名参数占位符 大括号里面写名称,format 里面用关键字参数传入,代码可读性更高
4 嵌套传参 传入列表字典,使用索引或者键名取出内容填充到占位符
冒号格式控制语法
格式写法 占位符冒号后面写控制规则
1 小数精度 例如冒号点 2f 代表保留两位小数,适合金额计算输出
2 补零填充 例如冒号 05d 代表整数总宽度 5 位,前面不足补零
3 对齐方式 小于号左对齐 大于号右对齐 居中对齐
4 千分位分隔 冒号逗号,大数字自动添加千分位逗号
5 百分比格式 冒号点 2 百分号,自动把小数转成百分比并且保留位数
format 函数与其他格式化方式对比表
| 对比项目 | format 函数 | 百分号格式化 | f-string |
|---|---|---|---|
| 推出版本 | Python2.6 | 早期版本 | Python3.6 |
| 可读性 | 高 | 一般 | 很高 |
| 重复引用变量 | 支持 | 不灵活 | 支持 |
| 格式控制 | 功能完整 | 功能完整 | 功能完整 |
| 低版本兼容 | 好 | 好 | 不兼容旧版本 |
深度补充知识点
format 函数最常见报错是 IndexError,也就是占位符里面写的索引,超过了 format 传入参数总数,比如只传两个参数,但是占位符写索引 2 就会报错,还有 KeyError,命名参数写法里面,大括号名称和 format 关键字参数名称不一致就会触发这个错误。如果字符串本身需要输出大括号字符,不能直接写,需要连续写两个大括号进行转义,单个大括号会被识别成占位符,这个是高频踩坑点。format 支持对象属性读取,占位符里面可以写点号,直接读取传入对象的属性。处理浮点数的时候,点 2f 是四舍五入保留小数,不是单纯截断,做金额业务的时候要确认是否符合业务规则。format 函数返回值是新字符串,原字符串本身不会修改,因为 Python 字符串属于不可变类型。另外现在新项目很多优先使用 f-string,但是维护老代码的时候,仍然会大量见到 format 函数,所以两种写法都建议掌握。
【常见问题】
问题 1 pythonformat 函数里面怎么重复使用同一个变量
回答 1 根据 pythonformat 函数,使用位置索引占位符,大括号里面写相同索引,就可以多次调用同一个参数,pythonformat 函数这个能力是相比百分号格式化很大优势。
问题 2 pythonformat 函数想要输出原本大括号怎么办
回答 1 根据 pythonformat 函数,单个大括号会识别成占位符,需要连续写两个大括号进行转义,pythonformat 函数这个转义规则新手很容易遗漏。
问题 3 pythonformat 函数和 f-string 哪个更好
回答 1 根据 pythonformat 函数,pythonformat 函数兼容性更好,老版本 Python 可以运行,f-string 写法更简洁,pythonformat 函数适合需要兼容旧环境的项目。
问题 4 pythonformat 函数保留两位小数怎么写
回答 1 根据 pythonformat 函数,在占位符冒号后面写点 2f,pythonformat 函数该语法会自动四舍五入保留两位小数,适合金额打印输出。
【免责申明】
本文仅为 Python 字符串格式化语法科普参考,不同 Python 版本语法细节存在差异,实际开发请参考 Python 官方文档,因代码参数不匹配造成运行报错相关风险,本文不承担相关责任。


