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

对比Python中的repr()函数和str()函数的用法及区别

发布时间:2024-01-06 00:31:26

Python中的repr()函数和str()函数都是用于将对象转换为字符串的函数,但它们在用法和区别上有一些不同。

首先,repr()函数和str()函数都可以将对象转换为字符串,但它们的输出格式是不同的。

repr()函数返回一个对象的字符串表示形式,可以认为是一种脚本化的表达方式,通常包含了关于对象的详细信息,以便于开发者理解和调试。它的输出通常是可以直接被解释器读取的,并且可以通过eval()函数将其转换回原始对象。

例如,对于一个整数对象,repr()函数会返回一个带有整数值的字符串表示形式,而对于一个自定义的类对象,repr()函数可能会返回类名和属性值的字符串表示形式。

>>> repr(123)
'123'
>>> repr('Hello')
"'Hello'"
>>> class Person:
...     def __init__(self, name):
...         self.name = name
...
>>> person = Person('Alice')
>>> repr(person)
'<__main__.Person object at 0x7fb176b8d280>'

str()函数返回一个对象的易读形式的字符串,通常用于将对象转换为用户可以理解的形式。它的输出通常不包含关于对象的详细信息,而是更加友好和简洁的方式展示。

例如,对于一个整数对象,str()函数会返回整数值所对应的字符串,而对于一个自定义的类对象,str()函数可能会返回一个描述对象属性的字符串。

>>> str(123)
'123'
>>> str('Hello')
'Hello'
>>> str(person)
'<__main__.Person object at 0x7fb176b8d280>'

另外,repr()函数和str()函数的输出有一些其他的约定。当对象没有定义__str__()方法时,str()函数会使用repr()函数的输出;而当对象没有定义__repr__()方法时,repr()函数会使用str()函数的输出。

以下是一个例子,演示了这两个函数的用法和区别:

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

person = Person('Alice')

print(repr(person))
print(str(person))

输出结果如下:

'<__main__.Person object at 0x7fb176b8d280>'
'<__main__.Person object at 0x7fb176b8d280>'

在这个例子中,我们定义了一个Person类,并创建了一个person对象。由于我们没有为Person类定义__repr__()和__str__()方法,所以repr()函数和str()函数的输出结果是相同的。

综上所述,repr()函数和str()函数都可以将对象转换为字符串,但repr()函数的输出更多的是对象的详细信息和可读性更差的形式,而str()函数的输出更偏向于易读性较强的形式。