Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.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/2/image-processing/2.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
Python %r的含义是什么?_Python_Repr - Fatal编程技术网

Python %r的含义是什么?

Python %r的含义是什么?,python,repr,Python,Repr,以下语句中的%r是什么意思 print '%r' % (1) 我想我听说过%s、%d和%f,但从未听说过这一点。它调用对象并插入结果字符串。它将替换内容打印为带有repr()的字符串,请参见文档。请注意,如果您习惯了%s和%d等在另一种语言(如C)中的工作方式,它们的工作方式可能与您预期的不同 特别是,%s也适用于整数和浮点运算,除非您有特殊的格式要求,其中%d或%f将给予您更多的控制权。背景: 在Python中,有两个内置函数用于将对象转换为字符串:vsstr应该是一个友好的、可读的字符串r

以下语句中的
%r
是什么意思

print '%r' % (1)

我想我听说过
%s
%d
%f
,但从未听说过这一点。

它调用对象并插入结果字符串。

它将替换内容打印为带有
repr()
的字符串,请参见文档。请注意,如果您习惯了%s和%d等在另一种语言(如C)中的工作方式,它们的工作方式可能与您预期的不同

特别是,%s也适用于整数和浮点运算,除非您有特殊的格式要求,其中%d或%f将给予您更多的控制权。

背景:

在Python中,有两个内置函数用于将对象转换为字符串:vs
str
应该是一个友好的、可读的字符串
repr
应该包含关于对象内容的详细信息(有时,它们会返回相同的内容,例如整数)。按照惯例,如果有一个Python表达式将求值到另一个==”的对象,
repr
将返回这样一个表达式,例如

>>> print repr('hi') 'hi' # notice the quotes here as opposed to... >>> print str('hi') hi
除了上面给出的回复之外,
'%r'
在具有异构数据类型的列表的场景中非常有用。 比如说,我们有一个
列表=[1,‘苹果’,2,‘r’,‘香蕉]
显然,在这种情况下,使用
'%d'
'%s'
会导致错误。相反,我们可以使用
'%r'
打印所有这些值

%s <=> str
%r <=> repr
所以


%r
%s
之间的区别在于,
%r
调用
repr()
方法,
%s
调用
str()
方法。这两个函数都是内置的Python函数

repr()
方法返回给定对象的可打印表示形式。
str()
方法返回给定对象的“非正式”或可打印的表示形式

在简单语言中,
str()
方法所做的是以最终用户希望看到的方式打印结果:

name=“Adam”
str(姓名)
出[1]:“亚当”
repr()
方法将打印或显示对象的实际外观:

name=“Adam”
报告员(姓名)
出[1]:“‘亚当’”

%s
调用所选对象的
\u str()\u
方法,并将其自身替换为返回值

%r
调用所选对象的
\uuuurepr()\uuuu
方法,并用返回值替换自身。

我在“艰苦学习Python”一书中读到,作者说

%r是调试的最佳格式,其他格式用于向用户显示变量


我发现%r对于打印未知编码的字符串非常有用,否则会引发%s错误
%s <=> str
%r <=> repr
class Foo:

    def __init__(self, foo):
        self.foo = foo


    def __repr__(self):
        return 'Foo(%r)' % self.foo

    def __str__(self):
        return self.foo


test = Foo('Text')
in[1]: test
Out[1]: Foo('Text')


in[2]: str(test)
Out[2]: 'Text'