欢迎访问宙启技术站
智能推送

Python中repr()函数的用法及使用技巧总结

发布时间:2023-12-24 22:24:23

repr()函数是Python内置的一个函数,用于返回一个对象的字符串表示形式。它通常被称为“对象的表示形式函数”,并返回一个可以用来重新创建该对象的字符串。

repr()函数的主要用途是与eval()函数配合使用,可以将一个Python对象转换为字符串形式,并在需要时将其恢复为原始对象。

下面是一些repr()函数的使用技巧及例子:

1. 将对象表示为合法的Python表达式:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __repr__(self):
        return f"Person('{self.name}', {self.age})"

person = Person("Alice", 25)
print(repr(person))  # Person('Alice', 25)

在上面的例子中,repr()函数返回的字符串可以被解释为一个合法的Python表达式,例如eval(repr(person))将返回原始的Person对象。

2. 为自定义类提供可打印的表示形式:

class Point:
    def __init__(self, x, y):
        self.x = x
        self.y = y

    def __repr__(self):
        return f"Point(x={self.x}, y={self.y})"

point = Point(2, 3)
print(repr(point))  # Point(x=2, y=3)

上面的例子中,repr()函数返回的字符串提供了Point对象的相关信息,方便调试和打印。

3. 用于调试和日志记录:

def divide(a, b):
    try:
        result = a / b
    except ZeroDivisionError as e:
        return repr(e)
    return result

print(divide(10, 0))  # ZeroDivisionError('division by zero',)

在上面的例子中,repr()函数返回的字符串表示ZeroDivisionError的详细信息,对于调试和日志记录非常有用。

4. 与__str__()方法的区别:

__str__()方法是另一个与对象的字符串表示相关的内置方法,通常用于返回一个较友好、易读的字符串表示形式。但__str__()方法主要用于用户可读的表示形式,而repr()函数主要用于开发者可读的表示形式。

class Student:
    def __init__(self, name, id):
        self.name = name
        self.id = id

    def __str__(self):
        return f"Student(name='{self.name}', id={self.id})"

    def __repr__(self):
        return f"Student('{self.name}', {self.id})"

student = Student("Bob", 12345)
print(str(student))  # Student(name='Bob', id=12345)
print(repr(student))  # Student('Bob', 12345)

在上面的例子中,__str__()方法返回一个友好的表示形式,而__repr__()方法返回一个开发者可读的表示形式。

总结:

- repr()函数是一个用于返回对象字符串表示形式的内置函数。

- 它通常被用于与eval()函数搭配使用,用于将对象转换为它的字符串表示。

- 自定义类可以通过实现__repr__()方法,返回一个能够重建原始对象的字符串表示。

- repr()函数对于调试和日志记录也非常有用。

- repr()函数与__str__()方法的区别在于目标受众:__str__()方法用于用户可读,而repr()函数用于开发者可读。