现在我正在为LPEDW工作,为Zed Shaw工作,在这个例子中,有些事情对我没有任何意义。
首先我指定formatter = % ( "%r %r %r %r")
,
然后我试着打开格式化程序。
pprint formatter % (
"I had this thing.",
"That you could type up right.",
"But it didn\'t sing.",
"So I said goodnight.",
)
输出:'I had this thing.' 'That you could type up right.' "But it didn't sing." 'So I said goodnight.'
。
为什么输出的单引号围绕第1,第2,第4个参数引用,但是3号引用双引号?
当我尝试为同一操作分配另一个变量时:
print formatter % (
"Whatever",
"Comes",
"First",
"Go first"
)
输出:'Whatever' 'Comes' 'First' 'Go first'
这里所有都是单引号,确实有意义。谁能告诉我这里发生了什么?
答案 0 :(得分:1)
%r
代表%repr
并且应该继续提供详细信息。
比如你的代码:
First I assign formatter = % ( "%r %r %r %r")
print formatter % ( 1, 2, 3, 4 )
print formatter % (
"I had this thing.",
"That you could type up right.",
"But it didn\'t sing.",
"So I said goodnight.",
)
输出:
1 2 3 4
'I had this thing.' 'That you could type up right.' "But it didn't sing." 'So I said goodnig'
现在,请注意第一行打印没有任何引号,因为它假设,详细说明这是整数。在第二个输出中,它的细节有第一个短语,并用引号括起来表示它的字符串
为什么输出有单引号围绕第1,第2,第4个参数,但是第3个双引号? 当我尝试为同一操作分配另一个变量时。
因为在第3个短语中你在单词don't
中使用单引号所以解释器引用带双引号的短语,即使你用单引号分配字符串就是告诉你,这是字符串和里面有单引号/转义字符。
注意:即使您使用了单引号的转义字符,它也将是双引号,这正是%repr应该做的。有关详细信息,请查看repr() implementation