0Pricing
Python Academy · 课时

模板字符串与 str.format

其他格式化工具

模板字符串与 str.format 是 CoddyKit 上的免费 Python Academy 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Python Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Python Academy 课程共包含 4 节课。

其他格式化工具

除了 f 字符串,Python 还提供另外两种格式化工具:str.format() 方法和 string.Template 类。每种工具都适用于不同场景。

print('Hello, {}!'.format('World'))

str.format 基础

str.format() 会按顺序使用参数替换 {} 占位符。它早于 f 字符串出现,至今仍出现在大量代码中。

msg = '{} is {} years old'.format('Ada', 36)
print(msg)

位置索引

在大括号中放入数字,即可根据位置重复使用或重新排列参数。

print('{0} {1} {0}'.format('echo', 'once'))

命名占位符

在大括号中使用名称,并传入关键字参数。这样可以让模板自我说明。

print('{name} scored {score}'.format(name='Lin', score=95))

格式说明符仍然适用

相同的迷你语言也可以放在 str.format 的冒号之后,因此您可以控制宽度、精度和对齐方式。

print('{:.2f}'.format(3.14159))
print('{:>8}'.format('hi'))

从字典进行格式化

使用 ** 将字典解包到 str.format 中,以填充命名占位符。

data = {'city': 'Rome', 'temp': 27}
print('{city}: {temp} C'.format(**data))

介绍模板字符串

string.Template 使用基于 $ 的占位符。它有意保持简单,对于用户提供的模板也更安全,因为它无法运行任意表达式。

from string import Template
t = Template('Hello, $name!')
print(t.substitute(name='World'))

使用大括号提高可读性

当占位符名称紧邻其他文本时,请将其包在大括号中,例如 ${name}。

from string import Template
t = Template('${item}s cost $$5')
print(t.substitute(item='apple'))

safe_substitute

缺少名称时,substitute 会引发 KeyError。而 safe_substitute 会让未知占位符保持原样。

from string import Template
t = Template('$greeting, $name')
print(t.safe_substitute(greeting='Hi'))

何时使用哪一种

建议:日常代码优先使用f 字符串。当模板与数据分离时使用 str.format。对于不受信任的用户提供模板,使用模板。

name = 'Sam'
print(f'f-string: {name}')
print('format: {}'.format(name))

来自外部文本的模板

由于模板文本只是一个字符串,您可以从配置文件或数据库中加载它,然后在运行时替换值。

from string import Template
stored = 'Order $id ships to $city'
t = Template(stored)
print(t.substitute(id=7, city='Oslo'))

快速检查

对于替换由不受信任的用户提供的模板中的值,哪种工具最安全?

回顾:模板字符串与 str.format

以下是 f 字符串的替代方案:

  • str.format() 使用 {} 占位符,支持位置参数、命名参数以及完整的格式规范。
  • string.Template 使用 $name 占位符,适合处理不受信任的输入。
  • safe_substitute 会保留未知占位符。
  • 对于普通代码,优先使用 f 字符串;当模板来自外部来源或不受信任时,再使用这些工具。
from string import Template
print(Template('Bye, $who').substitute(who='all'))
print('Done: {}'.format(True))

常见问题解答

「模板字符串与 str.format」课时是免费的吗?

是的 — 「模板字符串与 str.format」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Python Academy 课程的其余内容,请升级到 CoddyKit PRO。 Python Academy 课程共包含 4 节课。

「模板字符串与 str.format」这节课中我会学到什么?

其他格式化工具 你通过在浏览器中直接运行的动手代码来练习 Python Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Python Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Python Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。

「模板字符串与 str.format」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Python Academy 课中编写并运行代码吗?

能。每节 Python Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. f-string 表达式
  2. 格式说明符
  3. 格式微语言
  4. 模板字符串与 str.format
← 返回 Python Academy