Python基础: repr函数和str的区别

一、前言

在 Python 中要将某一类型的变量或者常量转换为字符串对象通常有两种方法,即 str() 或者 repr() 。

二、区别与使用

函数str() 用于将值转化为适于人阅读的形式,而repr() 转化为供解释器读取的形式(如果没有等价的语法,则会发生SyntaxError 异常), 适合开发和调试阶段使用。

2.1 相同点

number = 123456789

# 类型一致
print(type(str(number)))   # <class 'str'>
print(type(repr(number)))  # <class 'str'>

# 结果一致
print(str(number))  # 123456789
print(repr(number))  # 123456789

2.2 不同点

html = """
<html><head><title>The Dormouse's story</title></head>
<body>
<p class="title" name="dromouse"></p>
<p class="story">我是P标签</p>
</body>
"""
# 类型一致
print(type(str(html)))   # <class 'str'>
print(type(repr(html)))  # <class 'str'>


# 打印结果不一致
print(str(html))
'''
<html><head><title>The Dormouse's story</title></head>
<body>
<p class="title" name="dromouse"></p>
<p class="story">我是P标签</p>
</body>
'''
print(repr(html))
'''
'\n<html><head><title>The Dormouse\'s story</title></head>\n<body>\n<p class="title" name="dromouse"></p>\n<p class="story">我是P标签</p>\n</body>\n'
'''

但当我们把一个字符串传给 str() 函数再打印到终端的时候,输出的字符不带引号。而将一个字符串传给 repr() 函数再打印到终端的时候,输出的字符带有引号。

造成这两种输出形式不同的原因在于:

print('123456789'.__repr__())  # '123456789'
# print 结合 repr() 实际上是调用对象的 __repr__ 方法输出结果

print('123456789'.__str__())  # 123456789
# 而 print 语句结合 str() 函数实际上是调用了对象的 __str__ 方法来输出结果。

3、总结

str()函数: 主要面向用户,其目的是可读性,返回形式为用户友好性和可读性都较强的字符串类型;
repr()函数: 面向的是python解释器,或者说开发人员,其目的是准确性,其返回值表示python解释器内部的含义,常作为编程人员debug用途。

发布了72 篇原创文章 · 获赞 79 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_42444693/article/details/105260262