首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >什么时候在Python中使用%r而不是%s?

什么时候在Python中使用%r而不是%s?
EN

Stack Overflow用户
提问于 2011-05-15 06:20:52
回答 4查看 148.3K关注 0票数 176

Learn Python the Hard Way第21页上,我看到了这个代码示例:

代码语言:javascript
复制
x = "There are %d types of people." % 10
...
print "I said: %r." % x

为什么这里使用%r而不是%s?什么时候使用%r,什么时候使用%s

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-05-15 06:26:23

%s说明符使用str()转换对象,%r使用repr()转换对象。

对于某些对象,如整数,它们会产生相同的结果,但repr()的特殊之处在于(对于可能的类型),它通常返回有效的Python语法的结果,该语法可用于明确地重新创建它所表示的对象。

下面是一个使用日期的示例:

代码语言:javascript
复制
>>> import datetime
>>> d = datetime.date.today()
>>> str(d)
'2011-05-14'
>>> repr(d)
'datetime.date(2011, 5, 14)'

repr()不为其生成Python语法的类型包括那些指向外部资源的类型,例如file,您不能保证在不同的上下文中重新创建它。

票数 337
EN

Stack Overflow用户

发布于 2013-11-30 14:20:29

使用%r进行调试,因为它显示变量的“原始”数据,而其他数据用于显示给用户。

这就是%r格式化的工作方式;它按照您编写的方式(或接近的方式)打印它。它是用于调试的“原始”格式。在这里,用于向用户显示的\n不起作用。如果变量的原始数据为%r,则显示该表示。

代码语言:javascript
复制
months = "\nJan\nFeb\nMar\nApr\nMay\nJun\nJul\nAug"
print "Here are the months: %r" % months

输出:

代码语言:javascript
复制
Here are the months: '\nJan\nFeb\nMar\nApr\nMay\nJun\nJul\nAug'

从Learn Python的Hard Way中查看this example

票数 19
EN

Stack Overflow用户

发布于 2011-05-15 06:30:00

%r用引号显示:

它将如下所示:

代码语言:javascript
复制
I said: 'There are 10 types of people.'.

如果您使用的是%s,它将是:

代码语言:javascript
复制
I said: There are 10 types of people..
票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6005159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档