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中,有两个内置函数用于将对象转换为字符串:vsstr
应该是一个友好的、可读的字符串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'