このクワインの例を見つけました:
s='s=%r;print(s%%s)';print(s%s)
ここで指摘されているように、私はそれを取得し%s
、関数を%r
実行しますが、その部分とクインがどのように機能するかを正確に意味するのは何ですか?str
repr
s%s
s
に設定されています:
's=%r;print(s%%s)'
そのため、%r
は正確に(一重引用符を保持して) inに置き換えられs%s
、最後%%
はsingle に置き換えられ、次のようになります%
。
s='s=%r;print(s%%s)';print(s%s)
したがって、クイン。
この演算子は、C の printf と同じように、書式文字列x % y
の値を置き換えることを意味します。また、指定子はリテラル % 記号を表すため、フォーマット文字列内では s%s として出力され、文字列をキャプチャしないことに注意してください。y
x
%%
s%%s