Python中str()和repr()函数的区别
在 Python 中要将某一类型的变量或者常量转换为字符串对象通常有两种方法,即 str() 或者 repr() 。
区别与使用
函数str() 用于将值转化为适于人阅读的形式,而repr() 转化为供解释器读取的形式(如果没有等价的语法,则会发生SyntaxError 异常), 适合开发和调试阶段使用。
1 2 3 4 5 6 7 8 9 | >>> number = 123456789 >>> type ( str (number)) < class 'str' > >>> type ( repr (number)) < class 'str' > >>> print ( repr (number)) 123456789 >>> print ( str (number)) 123456789 |
两个函数返回的类型是相同的,值也是相同的。
1 2 3 4 | >>> print ( str ( '123456789' )) 123456789 >>> print ( repr ( '123456789' )) '123456789' |
但当我们把一个字符串传给 str() 函数再打印到终端的时候,输出的字符不带引号。而将一个字符串传给 repr() 函数再打印到终端的时候,输出的字符带有引号。
造成这两种输出形式不同的原因在于:
print 语句结合 str() 函数实际上是调用了对象的 __str__ 方法来输出结果。而 print 结合 repr() 实际上是调用对象的 __repr__ 方法输出结果。下例中我们用 str 对象直接调用这两个方法,输出结果的形式与前一个例子保持一致。
1 2 3 4 | >>> print ( '123456789' .__repr__()) '123456789' >>> print ( '123456789' .__str__()) 123456789 |
不同数据类型的不同处理
某对象没有适于人阅读的解释形式的话, str() 会返回与repr()等同的值。很多类型,诸如数值或链表、字典这样的结构,针对各函数都有着统一的处理方式。
代码实例:
1 2 3 4 5 6 | >>> listA = [ 1 , 2 , 3 ] >>> str (listA) '[1, 2, 3]' >>> repr (listA) '[1, 2, 3]' >>> |
结果是相同的。
而字符串和浮点数,它们的处理方式不同。
注意:Python3和Python2版本str函数处理浮点数时是不同的,Python3版本下,str和repr会返回相同的结果,Python2下则不会, 具体看下面的例子:
Python3版本:
1 2 3 4 5 6 7 8 9 | >>> string = 'Hello, PythonTab.com' >>> str (string) 'Hello, PythonTab.com' >>> repr (string) "'Hello, PythonTab.com'" >>> str ( 1.0 / 7.0 ) '0.14285714285714285' >>> repr ( 1.0 / 7.0 ) '0.14285714285714285' |
Python2版本:
1 2 3 4 | >>> str ( 1.0 / 7.0 ) '0.142857142857' >>> repr ( 1.0 / 7.0 ) '0.14285714285714285' |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】