Python str和repr的区别
介绍
在Python中,str
和repr
是两个常用的内置函数,用于返回对象的字符串表示形式。尽管它们的作用相似,但它们在实现和输出方面有一些重要的区别。本文将深入探讨str
和repr
的区别,并提供一些示例代码来帮助理解。
流程概述
在理解str
和repr
的区别之前,让我们先来看一下整个流程的概述。下表展示了实现“Python str和repr区别”的步骤和相应的代码。
pie
title 实现“Python str和repr区别”的步骤
"了解str和repr的定义" : 10%
"创建一个自定义类" : 20%
"重写__str__方法" : 30%
"重写__repr__方法" : 30%
"测试str和repr输出结果" : 10%
了解str和repr的定义
在开始之前,我们需要了解str
和repr
的定义。
str(object)
函数返回一个可打印的字符串对象。它用于将对象转换为适合人类阅读的形式。repr(object)
函数返回一个包含对象的可打印字符串形式的表达式。它用于将对象转换为一种可以用于重建对象的字符串表示形式。
创建一个自定义类
为了更好地理解str
和repr
的区别,我们将创建一个自定义的类Person
。这个类有两个属性:name
和age
。
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
重写__str__方法
我们需要重写Person
类的__str__
方法来定义对象的str
输出结果。
def __str__(self):
return f"Person(name={self.name}, age={self.age})"
在上面的代码中,我们使用了f-string来创建一个格式化的字符串,其中包含了name
和age
属性的值。
重写__repr__方法
接下来,我们需要重写Person
类的__repr__
方法来定义对象的repr
输出结果。
def __repr__(self):
return f"Person(name='{self.name}', age={self.age})"
同样地,我们使用f-string来创建一个格式化的字符串,其中包含了name
和age
属性的值。注意,我们将name
的值用单引号括起来,以确保输出的字符串形式可以被解析为Python表达式。
测试str和repr输出结果
最后,我们可以测试一下str
和repr
的输出结果。
person = Person("Alice", 25)
print(str(person)) # 打印str输出结果
print(repr(person)) # 打印repr输出结果
运行上述代码,将输出以下结果:
Person(name=Alice, age=25)
Person(name='Alice', age=25)
正如你所看到的,str
返回了一个格式化的字符串,而repr
返回了一个可以用于重建对象的字符串形式。注意到repr
中的name
值被用单引号括起来,这是为了确保它能够被解析为一个字符串。
结论
通过上述步骤,我们成功地实现了“Python str和repr区别”。str
和repr
是两个常用的函数,用于返回对象的字符串表示形式。它们在实现和输出方面有一些重要的区别。str
返回一个可打印的字符串对象,而repr
返回一个包含对象的可打印字符串形式的表达式。
希望本文对你理解str
和repr
的区别有所帮助!