Python “产出”;但它没有';不要唱歌;

Python “产出”;但它没有';不要唱歌;,python,Python,在这个节目中,没有错误,只是一个提问。请注意,输出的最后一行对单个片段使用单引号和双引号。你认为这是为什么?为什么他们没有选择在所有字符串周围使用双引号Python对象(在可行的情况下)试图以一种在使用repr时可以用来精确重建对象的方式来表示它们自己。由于格式字符串是%r而不是%s,因此您要求的是字符串的repr而不是str表示形式。对于包含单引号的字符串,有许多选项是有效的repr表示法。。。我脑子里想不出的几个是: formatter = "%r %r %r %r" print forma

在这个节目中,没有错误,只是一个提问。请注意,输出的最后一行对单个片段使用单引号和双引号。你认为这是为什么?为什么他们没有选择在所有字符串周围使用双引号

Python对象(在可行的情况下)试图以一种在使用
repr
时可以用来精确重建对象的方式来表示它们自己。由于格式字符串是
%r
而不是
%s
,因此您要求的是字符串的
repr
而不是
str
表示形式。对于包含单引号的字符串,有许多选项是有效的
repr
表示法。。。我脑子里想不出的几个是:

formatter = "%r %r %r %r"
print formatter % (1, 2, 3, 4)
print formatter % (True, False, False, True)
print formatter % (formatter, formatter, formatter, formatter)
print formatter % (
"I had this thing.",
"That you could type up right.",
"But it didn't sing.",
"So I said goodnight."
)

在这些选择中,第一个版本看起来是最好的,所以这就是他们选择使用的。您可能会问,为什么他们没有选择在所有字符串周围使用双引号,但当然,对于使用双引号的字符串,您也有同样的问题…

这是重复的,因为您使用的是字符串的原始表示形式。 让我们看看

对于这句话
“我有这个东西。”
输出将是单引号或双引号,因为字符串中没有单引号或双引号,唯一包含双引号输出的字符串将是
,但它没有唱。”
,因为它已经包含单引号:)


如果使用的是%s,则只会看到不带引号的字符串:)

双引号可以包含单引号作为字符串的一部分,反之亦然。就这样。FWIW,我必须把这个问题读三四遍才能弄明白你在问什么。我觉得你太努力了,不想说清楚,而想变得“聪明”。为了更清楚地说明这一点,我将发布确切的输出,并找出一种方法来突出显示令人困惑的行,以引起注意……是否有一种更简单的方法来编写最后一行
print formatter%(“我有这个东西。”,“你可以正确地键入。”,“但它没有唱歌。”,“所以我说晚安。”)
这很简单。。。你能澄清一下你所说的“更简单”是什么意思吗?我想简单地得到我有这个东西。你可以打对。你可以打对。您可以正确键入。(没有简单或双引号)您可以
''。加入它吗?@DavidLabrecque:您告诉Python使用
%r
进行格式化来显示字符串的表示,现在您不想要了?解决方案:不要使用
%r
"foo'bar"
'foo\'bar'
"""foo'bar"""
'''foo'bar'''