Python 3 quine 是如何工作的?

How does this Python 3 quine work?

找到这个 quine 的例子:

s='s=%r;print(s%%s)';print(s%s)

我知道 %s%r 执行 strrepr 函数,正如 here 指出的那样,但是 [=16] 的确切含义=] 部分以及 quine 的工作原理?

s 设置为:

's=%r;print(s%%s)'

所以 %rs%s 中的那个( 保留 单引号)和最后的 %% 替换为单个%,给予:

s='s=%r;print(s%%s)';print(s%s)

因此是 quine。

运算符x % y表示用格式字符串x替换值y,与C printf相同。另请注意,%% 说明符代表文字 % 符号,因此格式字符串中的 s%%s 将打印为 s%s,并且不会捕获字符串。