str() 用于生成用户友好的可读字符串,repr() 用于生成包含类型和构造信息的精确字符串,便于调试;如日期对象中 str() 输出“2025-04-05 10:23:45.123456”,而 repr() 输出“datetime.datetime(2025, 4, 5, 10, 23, 45, 123456)”;自定义类应至少实现 __repr__(),推荐同时实现 __str__() 和 __repr__(),以确保打印时可读、调试时明确;print() 调用 __str__(),交互式输出和容器展示则调用 __repr__(),故开发中应优先写好 __repr__()。

repr()
和 str() 都用于将对象转换为字符串,但它们的用途和返回结果有明显区别。简单来说,str() 是给人看的,repr() 是给开发者看的。
str() 的目标是生成易于理解、友好的字符串表示,适合展示给最终用户。它通常只显示关键信息,格式简洁。
repr() 的目标是生成明确、无歧义的字符串表示,主要用于调试和开发。理想情况下,返回的字符串应能用来重新创建该对象(例如通过 eval())。
以一个日期对象为例:
import datetime
now = datetime.datetime.now()
print(str(now)) # 输出:2025-04-05 10:23:45.123456(可读性强)
print(repr(now)) # 输出:datetime.datetime(2025, 4, 5, 10, 23, 45, 123456)(包含类型和构造信息)
可以看出,str() 更简洁,repr() 包含更多技术细节。
如果类中没有定义 __str__ 或 __repr__ 方法,Python 会使用默认的 repr,形如 <__m style="color:#f60; text-decoration:underline;" title="ai" href="https://www.php.cn/zt/17539.html" target="_blank">ain__.MyClass object at 0x...>。
建议在自定义类中至少实现 __repr__(),最好同时实现 __str__() 和 __repr__(),例如:
PictoGraphic
AI驱动的矢量插图库和插图生成平台
133
查看详情
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return f"{self.name}, {self.age}岁"
def __repr__(self):
return f"Person('{self.name}', {self.age})"
这样 str(p) 返回 "Alice, 30岁",而 repr(p) 返回 "Person('Alice', 30)",便于还原对象。
print(obj) 或 str(obj) 会调用 __str__()
交互式解释器输出、repr(obj)、容器中的元素展示(如列表里的对象)会调用 __repr__()
比如 list 中显示元素时,即使你打印列表,内部也使用 repr() 来表示每个元素,确保信息完整。
基本上就这些。记住:str 重可读,repr 重精确。开发中优先写好 __repr__,方便调试。
以上就是python repr()与str()区别总结的详细内容,更多请关注其它相关文章!
相关文章:
PHP表单数据传递:如何通过隐藏输入字段获取动态ID
反效果?《战地6》免费试玩开启后玩家数不升反降
如何将HTML表格多行数据保存到Google Sheet
如何使用CaptainHook和Composer管理Git钩子_在提交前自动运行代码检查的Composer配置
《GTA6》开发画面疑似泄露!这次可不是AI了
PDO预处理语句中冒号的正确处理:区分SQL函数格式与命名占位符
Win10怎么设置静态IP地址 Win10手动配置IP地址步骤【指南】
Go Martini框架:动态服务解码后的图片内容
React/Next.js中实现列表项的动态移动与状态管理:兼论唯一键的重要性
QQ邮箱在线登录平台 QQ邮箱个人邮箱网页版入口
excel如何生成目录 excel一键生成工作表目录超链接
HTML转PPT成品工具有哪些?HTML网页转PPT成品工具大全
Surface怎么安装系统 微软Surface Pro U盘重装win11教程
composer 和 npm/yarn 在管理依赖方面有什么核心思想差异?
抖音网页版企业服务中心登录入口_抖音网页版企业登录平台
AO3镜像入口大全 AO3网页版内容访问全集
sublime如何处理大型CSV文件的列对齐_sublime高级表格编辑插件指南
J*a中实现Go语言select通道多路复用机制
Yandex搜索引擎一键访问入口_俄罗斯Yandex官网免登录
Eclipse怎么运行工程_Eclipse工程运行配置说明
如何配置Composer的PSR-4自动加载_Composer自动加载命名空间映射实践教程
163邮箱官方主页登录 直达网易邮箱登录核心页面
三星ZFold5多任务卡顿_Samsung ZFold5流畅度提升
Word2013如何插入视频和音频媒体_Word2013媒体插入的多媒体支持
AWS EC2实例间SQL Server连接超时:安全组配置与故障排除指南
Win11怎么查看电脑配置_Win11硬件配置检测工具使用
处理动态列数据:J*a ArrayList的正确初始化与字符累加教程
没有大陆身份证/银行卡如何实名微信? 亲测有效的几种方法分享
C#中解析不规范的HTML为XML 常见的坑与解决办法
excel怎么提取文本中数字 excel函数提取技巧
探索高级语言到C/C++的转译路径:以Go为例及内存管理策略
qq浏览器打开空白页怎么办 qq浏览器启动后显示白屏的解决教程
Safari浏览器输入栏卡顿如何解决 Safari搜索建议与缓存清理
打开就能玩的植物大战僵尸 植物大战僵尸网页版传送门
处理Kafka消息时会话超时与实现幂等性消费者
QQ邮箱官方邮箱登录入口 QQ邮箱网页版快速访问
Win10如何清理注册表垃圾 Win10手动清理无效注册表【技巧】
PySpark中从现有列右侧提取可变长度字符创建新列的教程
消息称三星明年 2 月正式发布 HBM4,与 SK 海力士同台竞技
如何在网页中实现特定地点的随机图片展示
Golang如何使用new_Go new分配内存机制讲解
WooCommerce后台产品编辑页:获取分类ID并实现角色权限控制
电脑IP地址怎么查 查看本机IP地址的几种方法
如何在复杂的电商平台中优雅地管理共享资源并确保正确重定向,使用spryker-shop/resource-share-page模块助你一臂之力
QQ邮箱网页版入口 QQ邮箱官方邮箱登录通道
淘宝网网页版登录入口 淘宝官方网页版快捷登录
漫蛙2网页版漫画入口 漫蛙漫画在线官方登录
mysql通配符支持数字匹配吗_mysql通配符能否用于数字匹配的解析
MAC如何将整个网页截长图_MAC使用Safari的导出为PDF或第三方工具
React Router 嵌套组件中 URL 重定向问题的解决方案