Python中repr()函数的用法及使用技巧总结
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()函数用于开发者可读。
