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

如何在Python heredocs中实现变量插值?

在Python中实现类似Perl/Raku的Heredoc变量插值

这个问题问得好!在Python里,你可以用几种实用的方式来实现类似Perl/Raku中双引号heredoc的变量插值功能,我给你逐个说明:

方法1:f-string(Python 3.6+,推荐)

这是最直观且简洁的方式,Python的f-string天生支持多行文本(用三重双引号包裹)和变量插值,逻辑和你熟悉的Perl双引号heredoc几乎一致:

job = 'foo'
cpus = 3
heredoc = f"""
#SBATCH job {job}
#SBATCH cpus-per-task {cpus}
"""
print(heredoc)

只需要在三重双引号前加上f前缀,然后在字符串里用{变量名}的形式插入变量即可。如果不想输出开头的空行,也可以把第一行内容和三重引号写在一起:

heredoc = f"""#SBATCH job {job}
#SBATCH cpus-per-task {cpus}
"""

方法2:str.format()(兼容旧版本Python)

如果你的项目需要兼容Python 3.5及更早版本,或者需要更灵活的格式化逻辑,可以使用字符串的format()方法:

job = 'foo'
cpus = 3
heredoc = """
#SBATCH job {job}
#SBATCH cpus-per-task {cpus}
""".format(job=job, cpus=cpus)
print(heredoc)

这里先定义好带占位符{变量名}的多行字符串,再通过format()方法传入对应的变量值完成插值。

方法3:string.Template(贴近Perl/Raku的$变量语法)

如果你想要完全贴近Perl/Raku里$变量的写法,可以使用string模块的Template类:

from string import Template

job = 'foo'
cpus = 3
heredoc = Template("""
#SBATCH job $job
#SBATCH cpus-per-task $cpus
""").substitute(job=job, cpus=cpus)
print(heredoc)

这种方式直接用$变量名作为占位符,和你示例中的Perl/Raku代码写法几乎一模一样,只需要提前导入Template类即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:27:30