继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Python 的内置函数 repr

2882716
关注TA
已关注
手记 70
粉丝 0
获赞 0

Python 的内置函数 repr() 用于获取对象的"官方"字符串表示形式,通常是可以被 Python 解释器直接执行的代码形式。这个函数与 str() 函数不同,后者返回的是对象的"非正式"或可读性更好的字符串表示。

功能特点

  1. 可执行性repr() 返回的字符串理论上可以通过 eval() 函数重新构造出原对象
  2. 调试友好:主要用于调试和开发时查看对象的精确表示
  3. 类定制:可以通过定义 __repr__ 方法来自定义类的 repr() 输出

与 str() 的区别

  • str() 面向用户,追求可读性
  • repr() 面向开发者/解释器,追求准确性
  • 当对象没有定义 __str__ 方法时,Python 会使用 __repr__ 作为替代

使用示例

# 基本数据类型
print(repr(123))      # '123'
print(repr('abc'))    # "'abc'"

# 容器类型
print(repr([1, 2, 3]))  # '[1, 2, 3]'

# 自定义类
class Point:
    def __init__(self, x, y):
        self.x = x
        self.y = y
    
    def __repr__(self):
        return f"Point({self.x}, {self.y})"

p = Point(3, 4)
print(repr(p))  # Point(3, 4)

最佳实践

  1. 自定义类时应该总是实现 __repr__ 方法
  2. __repr__ 应该返回一个包含足够信息的字符串,能够重建对象
  3. 理想情况下,eval(repr(obj)) == obj 应该为真

应用场景

  • 调试时快速查看对象状态
  • 日志记录中需要精确的对象表示
  • 需要序列化/反序列化对象的场合
  • 实现 REPL(交互式解释器)环境时

注意:虽然 repr() 的输出通常可以被 eval() 执行,但这不是强制要求,特别是对于某些内置类型或复杂对象。

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP