news 2026/8/9 15:13:58

Python f-string 进阶:数字格式化、对齐填充、调试 = 号与嵌套表达式

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python f-string 进阶:数字格式化、对齐填充、调试 = 号与嵌套表达式

Python f-string 进阶:数字格式化、对齐填充、调试 = 号与嵌套表达式

你已经会用f"{name}"拼字符串了,但一到「金额保留两位小数」「日志里对齐成表格」「打印百分比」这些场景,还是习惯性地翻文档、拼str.format,甚至round()str()一顿手动拼接。其实这些 f-string 一个冒号就能搞定。

这篇把 f-string 里最实用的格式化语法过一遍,都是写业务代码天天要用的,记住就能少写一大堆胶水代码。

先看痛点:手动格式化有多啰嗦

price=1234.5# 朴素写法:又是 round 又是补零,还容易漏s=str(round(price,2))# '1234.5',小数位没补齐成两位!print("¥"+s)# ¥1234.5,不是你想要的 ¥1234.50

round只做数值四舍五入,不负责「显示成两位小数」。要稳定显示两位小数,该用 f-string 的格式说明符。

数字格式化:冒号后面就是格式

f-string 里{值:格式},冒号后面是「格式说明符」(和format()同一套语法):

price=1234.5print(f"¥{price:.2f}")# ¥1234.50 —— .2f 固定两位小数print(f"{0.1234:.1%}")# 12.3% —— 百分比,自动 ×100 加 %print(f"{1234567:,}")# 1,234,567 —— 千分位分隔符print(f"{1234567:,.2f}")# 1,234,567.00 —— 千分位 + 两位小数print(f"{255:#x}")# 0xff —— 十六进制,# 加前缀print(f"{42:08d}")# 00000042 —— 补零到 8 位(常用于流水号)

几个高频记忆点:

  • .2f定点两位小数(金额首选,不会像 round 那样丢尾零)
  • .1%百分比,值会自动乘 100 再加%
  • ,千分位;可和.2f组合成,.2f
  • 08d整数补零到 8 位(订单号、编号常用)

对齐与填充:打印成整齐的表格

日志里想让字段对齐成表格,用<(左对齐)、>(右对齐)、^(居中),数字是宽度:

rows=[("apple",3),("banana",12),("kiwi",120)]forname,qtyinrows:# name 左对齐占 10 格,qty 右对齐占 5 格print(f"{name:<10}{qty:>5}")# apple 3# banana 12# kiwi 120 —— 数字右对齐,个位数天然对齐

还能指定填充字符(放在对齐符号前面):

print(f"{'标题':*^20}")# *******标题********* —— 用 * 填充并居中print(f"{7:0>4}")# 0007 —— 用 0 填充右对齐(等价 04d)

宽度还能用变量,嵌套一层大括号动态传:

width=12print(f"{'name':<{width}}")# 宽度由 width 变量决定

调试神器:=号自动打印「变量名=值」

Python 3.8 起,f-string 里在表达式后加=,会同时打印表达式本身和它的值,调试时不用再写print("x =", x)了:

x,y=3,4print(f"{x=},{y=}")# x=3, y=4print(f"{x+y=}")# x + y=7 —— 表达式原样 + 结果print(f"{x*y=}")# x * y = 12 —— 等号旁留空格,输出也带空格

=还能和格式说明符组合,调试浮点数特别顺手:

importmath r=2.5print(f"{math.pi*r**2=:.2f}")# math.pi * r ** 2=19.63

这是我个人最爱用的一招:临时排查时把print(x)改成print(f"{x=}"),连变量名都帮你标好,删的时候也好找。

嵌套表达式与调用:大括号里能写几乎任意表达式

f-string 的大括号里可以放函数调用、下标、三元表达式、方法链:

user={"name":"alice","score":87}print(f"{user['name'].upper()}")# ALICEprint(f"{'及格'ifuser['score']>=60else'不及格'}")# 及格print(f"{user.get('age','未知')}")# 未知 —— 带默认值

注意引号嵌套:Python 3.12 之前,f-string 里不能用和外层相同的引号。3.12 起放宽了,但为了兼容老版本,内层习惯用另一种引号(外层双引号、内层单引号)。

一个常见坑:想输出真正的大括号要写两个

f-string 里{有特殊含义,想输出字面的大括号(比如生成 JSON 片段、CSS)要写{{}}:

name="box"print(f"{{'class': '{name}'}}")# {'class': 'box'} —— 外层 {{ }} 转义成字面括号

漏写会直接SyntaxError或把内容当表达式,生成模板字符串时尤其容易踩。

小结

  • 金额/小数用:.2f(比round稳,不丢尾零),百分比:.1%,千分位:,,可组合成:,.2f
  • 对齐用</>/^+ 宽度,填充字符放对齐符前面;宽度可用{变量}动态传。
  • 调试用f"{x=}"自动打印「变量名=值」,还能接:.2f等格式,比手写print("x=", x)省事。
  • 大括号里能写函数调用、下标、三元表达式;引号嵌套注意版本,输出字面大括号要写{{ }}
  • 一句话记忆点:格式化的活别再手动 round+拼接了,一个冒号交给 f-string;排查 bug 一个=号搞定。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/9 15:12:38

5分钟掌握Video Analyzer:零代码实现智能视频内容理解

5分钟掌握Video Analyzer&#xff1a;零代码实现智能视频内容理解 【免费下载链接】video-analyzer Analyze videos using LLMs, Computer Vision and Automatic Speech Recognition 项目地址: https://gitcode.com/gh_mirrors/vi/video-analyzer 在数字内容时代&#x…

作者头像 李华
网站建设 2026/8/9 15:10:52

无锡水冷机组维保-欧米到家10年经验师傅30分钟极速上门检修|故障检修 | 定期保养 | 配件更换 | 清洗维护| 报价公开透明一站式服务

前言水冷机组广泛应用于无锡各大写字楼、商业综合体、工业厂房、高端别墅等场景&#xff0c;是商用及家用制冷系统的核心设备。长期高负荷运行、日常养护缺失&#xff0c;极易出现制冷变差、机组跳机、异响震动、管路漏水、结霜结冰等故障。不少用户维修时经常遇到师傅技术有限…

作者头像 李华
网站建设 2026/8/9 15:07:58

Java开发核心技术与企业级应用实践指南

1. 为什么Java依然是开发者必备技能 2003年我刚接触编程时&#xff0c;Java已经是最流行的语言之一。二十年过去了&#xff0c;虽然各种新语言层出不穷&#xff0c;但Java依然稳居TIOBE指数前三。这背后有几个关键原因&#xff1a;首先&#xff0c;Java的"一次编写&#x…

作者头像 李华
网站建设 2026/8/9 15:07:52

阿里云可观测性平台实战:Spring Boot应用接入与Gartner挑战者解析

1. 背景与核心概念&#xff1a;什么是可观测性平台&#xff1f; 在复杂的分布式系统和云原生架构成为主流的今天&#xff0c;传统的监控手段已经显得力不从心。你是否遇到过这样的场景&#xff1a;线上服务突然变慢&#xff0c;告警信息铺天盖地&#xff0c;但你却像在黑暗中摸…

作者头像 李华
网站建设 2026/8/9 15:07:22

科技查新报告哪个机构快

屏幕前的小白有没有过下面的经历呀&#xff0c;真是蛮崩溃的&#xff1a; 眼瞅着申报截止就剩两三天&#xff0c;突然发现没准备好科技查新报告。 跑到线下的查新窗口被告知需要7-10个工作日&#xff0c;想加急最少也要等2天...... 市面上具备资质的查新机构这么多&#xff…

作者头像 李华
网站建设 2026/8/9 15:06:17

如何快速掌握Unity插件框架:BepInEx 6.0.0完整架构解析与实战指南

如何快速掌握Unity插件框架&#xff1a;BepInEx 6.0.0完整架构解析与实战指南 【免费下载链接】BepInEx Unity / XNA game patcher and plugin framework 项目地址: https://gitcode.com/GitHub_Trending/be/BepInEx BepInEx作为Unity游戏开发中最强大的插件框架和模组注…

作者头像 李华