Python 这两个字符串之间的区别是什么?

Python 这两个字符串之间的区别是什么?,python,string,printing,string-formatting,Python,String,Printing,String Formatting,我最近开始学习Python,我希望您能够帮助我解决一个困扰我的问题。我一直在网上学习Python。在练习6中,我遇到了一个问题,我使用了%r字符串格式化操作,结果导致两个不同的字符串。当我打印一个字符串时,我得到了带单引号的字符串(')。另一个是双引号(“”) 代码如下: x = "There are %d types of people." % 10 binary = "binary" do_not = "don't" y = "Those who know %s and those who

我最近开始学习Python,我希望您能够帮助我解决一个困扰我的问题。我一直在网上学习Python。在练习6中,我遇到了一个问题,我使用了
%r
字符串格式化操作,结果导致两个不同的字符串。当我打印一个字符串时,我得到了带单引号的字符串(
'
)。另一个是双引号(
”)

代码如下:

x = "There are %d types of people." % 10
binary = "binary"
do_not = "don't"
y = "Those who know %s and those who %s." % (binary, do_not)

print "I said: %r." % x
print "I also said: %r." % y
第一条打印语句的结果:

我说:“有10种类型的人。”

第二条打印语句的结果:

我还说:“懂二进制的和不懂二进制的。”

我想知道为什么其中一条语句的结果是单引号(
'
),而另一条语句的结果是(
'
)。 ]
另外,我正在使用Python 2.7。

%r
正在获取字符串的
repr
版本:

>>> x = 'here'
>>> print repr(x)
'here'
你看,单引号是常用的。但是,对于
y
,字符串中只有一个引号(撇号)。嗯,一个对象的
repr
通常是这样定义的,以便将其作为代码计算等于原始对象。如果Python使用单引号,则会导致错误:

>x='那些不
文件“”,第1行
x='那些不知道的人
^
SyntaxError:无效语法

因此它使用了双引号。

注意这一行->
do\u not=“don”
。这个字符串中有一个单引号,这意味着必须转义单引号;否则,解释器从哪里知道字符串的开始和结束?Python知道使用
来表示这个字符串文本

如果删除
,则字符串周围会出现一个引号:

>>> x = 'here'
>>> print repr(x)
'here'
do\u not=“dont”

>>我还说:“懂二进制和不懂二进制的人。”