鱼C论坛

 找回密码
 立即注册
查看: 2876|回复: 4

[已解决]%r 字符串(repr())的显示

[复制链接]
发表于 2022-12-28 18:50:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
>>> print('%r' % set([1, 1, 2, 3]))
{1, 2, 3}

>>> print('%r' % repr(set([1, 1, 2, 3])))
'{1, 2, 3}'

看得有点晕:

1、两个有何区别?
2、%r  (repr()分别什么意思
3、为什么可以去掉重复的1?
4、set([1, 1, 2, 3]):这是集合里列表的意思吗?

请大神指点解疑释惑,感谢!


最佳答案
2022-12-28 20:26:06
1. %r的意思是以repr的形式格式化字符串, 另一种是%s, 表示使用str(x)获取字符串格式化
2. repr(x)就是调用对象x.__repr__方法获取表示字符串
3. set是集合, 集合元素是不能重复的. 所以会把1去除
4. set([1, 1, 2, 3])是调用set构造方法, 传入一个参数: [1, 1, 2, 3]. 简单理解就是把列表转换成集合

print('%r', x) 和 print('%r', repr(x))在这里结果一样, 后者的写法是多余的, 还会影响程序执行性能
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-12-28 20:26:06 | 显示全部楼层    本楼为最佳答案   
1. %r的意思是以repr的形式格式化字符串, 另一种是%s, 表示使用str(x)获取字符串格式化
2. repr(x)就是调用对象x.__repr__方法获取表示字符串
3. set是集合, 集合元素是不能重复的. 所以会把1去除
4. set([1, 1, 2, 3])是调用set构造方法, 传入一个参数: [1, 1, 2, 3]. 简单理解就是把列表转换成集合

print('%r', x) 和 print('%r', repr(x))在这里结果一样, 后者的写法是多余的, 还会影响程序执行性能
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-28 20:27:18 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-12-28 21:03:48 | 显示全部楼层
本帖最后由 lzb1001 于 2022-12-28 21:15 编辑
The_stars 发表于 2022-12-28 20:26
1. %r的意思是以repr的形式格式化字符串, 另一种是%s, 表示使用str(x)获取字符串格式化
2. repr(x)就是调 ...


最后一行是不是写错了?是否应为:

print('%r' % x) 和 print('%r' % repr(x))

另外,两个打印输出的结果好像还是有点差别:

{1, 2, 3}:无单引号,对应__str__是给普通人员看的???


'{1, 2, 3}':有单引号,对应__repr__是给开发人员看的???

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-12-28 21:04:32 | 显示全部楼层
lxping 发表于 2022-12-28 20:27
repr函数解析:https://fishc.com.cn/thread-216410-1-3.html
set函数解析:https://fishc.com.cn/thread- ...

感谢大神指点
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-25 03:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表