为什么这两个使用%r的输出在python中的区别是单引号和双引号
这是一个学习Python的练习。我试图理解这里的“%r”,所以我尝试了上面的两个打印。输出是为什么这两个使用%r的输出在python中的区别是单引号和双引号,python,Python,这是一个学习Python的练习。我试图理解这里的“%r”,所以我尝试了上面的两个打印。输出是 binary = "binary" do_not = "don't" x = "There are %s types of people." % binary y = "Those who know %s and those who %s." % (binary, do_not) print "I also said: %r." % y print "I also said: %r." % x
binary = "binary"
do_not = "don't"
x = "There are %s types of people." % binary
y = "Those who know %s and those who %s." % (binary, do_not)
print "I also said: %r." % y
print "I also said: %r." % x
现在我想知道为什么这两种印刷品之间的区别是双引号和单引号?
感谢您的帮助。这是因为如果
不使用单引号,如果字符串包含单引号,python会自动将其置于双引号中“
。否则,它会将字符串置于单引号中
I also asid: "Those who know binary and those who don't.".
I also said: 'There are binary types of people.'.
注意:不能将包含单引号的字符串放入单引号中,否则会引发语法错误
:
>>> x
'There are binary types of people.'
>>> y
"Those who know binary and those who don't."
阅读更多关于它的信息,因为如果不使用单引号,如果字符串包含单引号,python会自动将它放在双引号中“
。否则它会将字符串放在一个引号中
I also asid: "Those who know binary and those who don't.".
I also said: 'There are binary types of people.'.
注意:不能将包含单引号的字符串放入单引号中,否则会引发语法错误
:
>>> x
'There are binary types of people.'
>>> y
"Those who know binary and those who don't."
阅读更多关于的信息,让我给你举个例子
>>> repr("example")
"'example'"
>>> repr("exampl'e")
'"exampl\'e"'
下面的示例可以很好地打印,但是如果使用单个引号,它将在let's的“之后退出
这是另一个例子
print "Let's try this example"
如果在这里使用双引号,那么它将在Hello之前转义。这些都是简单的用例。如果您使用的是需要单引号或双引号的输出html标记,那么它们会很有用。所以让我给您举个例子
>>> repr("example")
"'example'"
>>> repr("exampl'e")
'"exampl\'e"'
下面的示例可以很好地打印,但是如果使用单个引号,它将在let's的“之后退出
这是另一个例子
print "Let's try this example"
如果在这里使用双引号,那么它将在Hello之前转义。这些都是简单的用例。如果您使用的是需要单引号或双引号的输出html标记之类的东西,它们会派上用场。这种%r
格式使Python使用repr
函数进行打印。因此,以下是等效的:
print 'He said "Hello!"'
那么问题就变成了,repr
为什么有时使用单引号,有时使用双引号?首先,repr
的目标是生成一个Python对象的表示,它也是有效的Python源代码(这不是强制性要求,但对于许多Python类型来说确实有效)。对于包含撇号的字符串,有多种表示方法:
"%r" % my_string ≡ "%s" % repr(my_string)
repr
决定变得“聪明”,选择一个更容易阅读的,即使用双引号,只要它不包含双引号。在所有其他情况下,Python都返回默认的单引号。这就是为什么您会看到不同字符串的不同行为
更相关的是,不要依靠repr
(或%r
)引用字符串供人使用,请为此编写自己的函数。这并不是为了达到这个目的,它主要是用来作为调试时转储Python对象的一种方便方式
好吧,没有任何文档明确规定当你repr
一个字符串时你会得到什么,除了eval(repr(my_string))==my_string
应该是正确的。%r
格式使Python使用repr
函数打印。因此,以下是等效的:
print 'He said "Hello!"'
那么问题就变成了,repr
为什么有时使用单引号,有时使用双引号?首先,repr
的目标是生成一个Python对象的表示,它也是有效的Python源代码(这不是强制性要求,但对于许多Python类型来说确实有效)。对于包含撇号的字符串,有多种表示方法:
"%r" % my_string ≡ "%s" % repr(my_string)
repr
决定变得“聪明”,选择一个更容易阅读的,即使用双引号,只要它不包含双引号。在所有其他情况下,Python都返回默认的单引号。这就是为什么您会看到不同字符串的不同行为
更相关的是,不要依靠repr
(或%r
)引用字符串供人使用,请为此编写自己的函数。这并不是为了达到这个目的,它主要是用来作为调试时转储Python对象的一种方便方式
好吧,除了eval(repr(my_string))==my_string
被认为是正确的之外,没有任何文档明确规定当你repr
一个字符串时会得到什么