我最近开始学习Python,我希望你能帮我解决一直困扰我的问题。我一直在用Learn Python The Hard Way在线学习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
第一份印刷声明的结果:
I said: 'There are 10 types of people.'.
第二份印刷声明的结果:
I also said: "Those who know binary and those who don't.".
我想知道为什么其中一个语句的单引号(' '
)和另一个语句(" "
)的结果。
]
附:我使用的是Python 2.7。
答案 0 :(得分:1)
%r
正在获取字符串的repr
版本:
>>> x = 'here'
>>> print repr(x)
'here'
你看,单引号是通常使用的。但是,在y
的情况下,字符串中有一个单引号(撇号)。好吧,通常定义一个对象的repr
,以便将其作为代码进行评估等于原始对象。如果Python使用单引号,那将导致错误:
>>> x = 'those who don't'
File "<stdin>", line 1
x = 'those who don't'
^
SyntaxError: invalid syntax
所以它改为使用双引号。
答案 1 :(得分:1)
注意这一行 - &gt; do_not = "don't"
。此字符串中有一个引号,表示必须转义单引号;否则解释器会在哪里知道字符串开始和结束的位置? Python知道使用""
来表示这个字符串文字。
如果我们删除'
,那么我们可以期待围绕字符串的单引号:
do_not = "dont"
>>> I also said: 'Those who know binary and those who dont.'.