python中%r的含义是什么?

在下面的语句中%r的含义是什么?

 print '%r' % (1) 

我想我听说过%s%d%f但从来没有听说过这个。

背景:

在Python中,有两个将对象转换为string的内build函数: strreprstr应该是一个友好的,可读的string。 repr应该包含有关对象内容的详细信息(有时,它们将返回相同的内容,例如整数)。 按照惯例,如果有一个Pythonexpression式将评估另一个==的对象, repr将返回这样一个expression式,例如

 >>> print repr('hi')
 '嗨'#注意这里的引用,而不是...
 >>> print str('hi')
嗨

如果返回一个expression式对一个对象没有意义,那么repr应该返回一个被<和>符号包围的string,例如<blah>

回答你原来的问题:

%s < – > str
%rrepr

此外:

您可以通过实现__str____repr__方法来控制自己的类的实例转换为string的方式。

 class Foo: def __init__(self, foo): self.foo = foo def __eq__(self, other): """Implements ==.""" return self.foo == other.foo def __repr__(self): # if you eval the return value of this function, # you'll get another Foo instance that's == to self return "Foo(%r)" % self.foo 

它调用对象的repr()并插入结果string。

它用repr()打印replace为string。

添加到上面给出的回复中, '%r'在具有异构数据types的列表的场景中可能很有用。 假设我们有一个list = [1, 'apple' , 2 , 'r','banana']显然在这种情况下,使用'%d''%s'会导致错误。 相反,我们可以使用'%r'打印所有这些值。

请参阅文档中的string格式化操作 。 请注意,%s和%d等可能会以不同的方式工作,如果您习惯于使用其他语言(如C)工作的方式

特别是,除非你有特殊的格式要求,%d或%f会给你更多的控制权,否则%s对于整数和浮点数也适用。