You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在不修改原字符串的前提下高效格式化生成新字符串?

高效利用字符串模板生成目标字符串且不修改原模板

首先明确:Python中的字符串是不可变类型,所有字符串操作(包括格式化)都不会原地修改原字符串,而是返回一个全新的字符串实例。所以你完全不用担心原模板会被格式化操作修改。

下面是几种高效生成目标字符串的方法:

1. 原生str.format()方法(推荐)

直接使用模板字符串的format()方法,每次调用都会基于原模板生成新字符串,原模板保持不变:

WORKER_TEMPLATE = "worker-{0}"
# 生成各个目标字符串
worker_0 = WORKER_TEMPLATE.format(0)
worker_2 = WORKER_TEMPLATE.format(2)
worker_n = WORKER_TEMPLATE.format("N")

# 原模板依然完好
print(WORKER_TEMPLATE)  # 输出: worker-{0}

这种方法无需额外导入模块,语法简洁,是最常用的字符串格式化方式。

2. 使用string.Template类

如果你更喜欢命名式的占位符(而非位置索引),可以用标准库的Template类,同样不会修改原模板对象:

from string import Template

WORKER_TEMPLATE = Template("worker-$num")
worker_0 = WORKER_TEMPLATE.substitute(num=0)
worker_2 = WORKER_TEMPLATE.substitute(num=2)
worker_n = WORKER_TEMPLATE.substitute(num="N")

# 原Template对象不受影响
print(WORKER_TEMPLATE.template)  # 输出: worker-$num

关键原理说明

Python字符串的不可变性决定了:任何对字符串的修改操作(包括格式化、拼接、替换等)都不会改变原字符串的内容,而是创建并返回一个新的字符串对象。所以无论你调用多少次format(),原WORKER_TEMPLATE始终保持初始状态,不会被"原地修改"。

内容的提问来源于stack exchange,提问作者Xaver

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 05:50:50