信息发布→ 登录 注册 退出

python repr()与str()区别总结

发布时间:2025-11-22

点击量:
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__()。

python repr()与str()区别总结

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 PictoGraphic

AI驱动的矢量插图库和插图生成平台

PictoGraphic 133 查看详情 PictoGraphic

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 重定向问题的解决方案 

在线客服
服务热线

服务热线

4008988990

微信咨询
二维码
返回顶部
×二维码

截屏,微信识别二维码

打开微信

微信号已复制,请打开微信添加咨询详情!