Python:打印'%r k %% k'%'a'中的两个百分号是什么?

时间:2015-01-31 19:05:44

标签: python quine

我在研究quines时遇到过这个问题。我很想知道%%在下面的内容中做了什么

print '%r k%%k'%'a'

我理解%r采用传递的参数的字符串表示(在本例中为'a')并将其添加到带引号的字符串中,因此在这种情况下它会打印'a'k%k。我无法弄清楚k %% k的作用是什么?如果我删除其中一个%符号,我会收到错误。如果我没有%r,我也会收到错误。然而,当我有%r和两个%符号介于ks(或任何字母表)之间时,它打印出几乎相同的东西,但丢失一个%(在这种情况下k%k为k %% k)。这里发生了什么?

1 个答案:

答案 0 :(得分:4)

%%是单个%字符的转义符;你无法使用那个角色:

>>> '%s: %%' % 'One percent character'
'One percent character: %'

请参阅String Formatting Operations documention

  

%
  没有转换参数,导致结果中出现'%'个字符。

通过删除一个%字符,您形成了%k格式,但没有转换类型k。错误消息反映出:

>>> '%k' % 'No such format type'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: unsupported format character 'k' (0x6b) at index 1