2015-01-31 3 views
-1

Я столкнулся с этим, исследуя quines. Мне интересно знать, что %% делает в следующемPython: Что означают два символа% в печати '% r k %% k'% 'a' do?

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

Я понимаю, что% г принимает строковое представление аргумента, который передается (в данном случае «а»), и добавляет его в строку с кавычки, поэтому в этом случае он печатает «a» k% k. Я не могу понять, что делает k %% k? Если я удалю один из знаков%, я получаю сообщение об ошибке. Если у меня есть оба без% r, я тоже получаю ошибку. Однако, когда у меня есть как% r, так и два знака% между ks (или любым алфавитом), он печатает почти то же самое, но с отсутствием одного% (k% k в этом случае для k %% k). Что здесь происходит?

ответ

3

%% является побег на одного персонажа %; Вы не могли бы использовать этот символ:

>>> '%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