Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么这两个使用%r的输出在python中的区别是单引号和双引号_Python - Fatal编程技术网

为什么这两个使用%r的输出在python中的区别是单引号和双引号

为什么这两个使用%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

这是一个学习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   
现在我想知道为什么这两种印刷品之间的区别是双引号和单引号?
感谢您的帮助。

这是因为如果
不使用单引号,如果字符串包含单引号,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
一个字符串时会得到什么