我基本上是在尝试在Python中制作一个quine,最开始尝试了f-strings,但很快发现我必须先定义要格式化的变量。然后我学习了字符串模板,并想到使用这种方法。然而,我对此并不是很有经验,需要一些帮助。有什么建议吗?
以下是实际代码:
from string import Template
s="from string import Template\ns=$s\nt=Template($s).substitute(s=$s)\nprint($s)"
t=Template(s).substitute(s=s)
print(s)
它给了我某种程度上正确的结果。唯一的问题是它没有用实际字符串替换$s
。也许我刚刚误解了quines的整个概念和方法,但我认为这应该行得通。
输出:
from string import Template
s=$s
t=Template($s).substitute(s=$s)
print($s)
!r
修改器/指令,它使用repr
而不是str
。这是您可以恢复引号的方法,因为字符串的默认repr
实现是以引用形式返回字符串,就像您在 Python 源代码中键入的那样。我不确定是否有一种方法可以使用string.Template
来实现这一点。 - shadowtalker{0!r}
中的0
是什么意思? - Gobystr.format
的元素的索引,即我们传递给str.format
的第一个元素,即s
。 - Will Da Silva