Python: print '%r k%%k'%'a' 中的两个 % 符号是做什么用的?
Python: What does the two % signs in print '%r k%%k'%'a' do?
我在研究 quines 时遇到了这个问题。我很想知道 %% 在下面做了什么
print '%r k%%k'%'a'
我知道 %r 获取传递的参数的字符串表示形式(在本例中为 'a')并将其添加到带引号的字符串中,因此在本例中它会打印 'a' k %k。我不知道 k%%k 是做什么的?如果删除其中一个 % 符号,则会出现错误。如果两者都没有 %r,我也会收到错误消息。但是,当我同时使用 %r 和 ks(或任何字母表)之间的两个 % 符号时,它打印出几乎相同的内容,但缺少一个 %(在这种情况下,k%k 表示 k%%k)。这里发生了什么?
%%
是单个 %
字符的转义;您不能以其他方式使用该字符:
>>> '%s: %%' % 'One percent character'
'One percent character: %'
参见String Formatting Operations documention:
%
No argument is converted, results in a '%'
character in the result.
通过删除一个 %
字符,您形成了 %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
我在研究 quines 时遇到了这个问题。我很想知道 %% 在下面做了什么
print '%r k%%k'%'a'
我知道 %r 获取传递的参数的字符串表示形式(在本例中为 'a')并将其添加到带引号的字符串中,因此在本例中它会打印 'a' k %k。我不知道 k%%k 是做什么的?如果删除其中一个 % 符号,则会出现错误。如果两者都没有 %r,我也会收到错误消息。但是,当我同时使用 %r 和 ks(或任何字母表)之间的两个 % 符号时,它打印出几乎相同的内容,但缺少一个 %(在这种情况下,k%k 表示 k%%k)。这里发生了什么?
%%
是单个 %
字符的转义;您不能以其他方式使用该字符:
>>> '%s: %%' % 'One percent character'
'One percent character: %'
参见String Formatting Operations documention:
%
No argument is converted, results in a'%'
character in the result.
通过删除一个 %
字符,您形成了 %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