Python中str()、repr()、``的区别

本文探讨Python中的str()、repr()函数和``运算符的区别。str()函数转化值为人阅读的形式,repr()则用于解释器读取,其返回的字符串包含引号。当应用于字符串时,repr()会包括转义定界符。在Python2中,``与repr()作用相同,但在Python3中已被废弃。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

str()函数和repr()函数都是将任意数据类型转换为字符类型,但是它们之间又有一些区别,网上以及一些书籍上大多数都是这样描述:

函数str() 用于将值转化为适于人阅读的形式,而repr() 转化为供解释器读取的形式。

或者是:

str()函数得到的字符串可读性好,而repr()函数得到的字符串通常可以用来重新获得该对象。通常情况下obj==eval(repr(obj))这个等式是成立的。

事实上到目前为止我并不清楚repr()函数有什么特别的用途,但还是根据自己的理解写下以下笔记 。
  str()函数和repr()函数的使用示例:

>>> str(5)'5'>>> repr(5)'5'>>> str(type(5))"<class 'int'>">>> repr(type(5))"<class 'int'>">>> str(5)==repr(5)True>>> str(type(5))==repr(type(5))True

从上面的示例中并不能发现str()函数和repr()函数在使用上有什么区别,所以某种程度上str()函数和repr()函数的功能是有一定的重合性的。
  但如果我们将一个字符串值做为参数分别带入到两个函数中,结果就会不一样。

>>> str('abc')'abc'>>> repr('abc')"'abc'">>> str('abc')==repr('abc')False

上面的示例中可以看出,如果使用str()函数值来转换一个字符串变量,其值并不会发生改变。但如果换成repr()函数,则repr()函数会将原来值的字符串表示中的定界符引号也转换为字符串的一个组成部分。再看下面的例子:

>>> repr("abc")"'abc'">>> repr("'abc'")'"\'abc\'"'>>> repr('''"'abc'"''')'\'"\\\'abc\\\'"\''

为了表达多出来的定界符,repr()函数最后使用了转义符“\”。
  目前为止我只发现了str()函数和repr()函数在转换字符串时有这一点区别,其他在功能上似乎没有不同(或许是我的理解以及查阅的资料还不够全面,如有错误欢迎指正)。
  再为说一下``运算符(注意这不是两个单引号,而是键盘字母键区的数字键“1”前面的那个按键),这个运算符的作者跟repr()的作用其实是一模一样的,但只在python2版本中获得支持,在Python3中已经取消了这种用法。
  以下示例是在python2.7.13中进行的演示。

>>> repr('abc')"'abc'">>> `'abc'`"'abc'"

以下示例是在Python3.6.0中进行的演示。

>>> repr('abc')"'abc'">>> `'abc'`
  File "<stdin>", line 1
    `'abc'`
    ^
SyntaxError: invalid syntax

最后

以上就是小编所分享的内容,喜欢的话可以加个关注,希望能够帮助到大家,仅供参考。
我自己整理了一套最新的python系统学习教程,从基础到实战,实用性都很高,可以免费送给大家,进python学习交流群:851211580 即可免费领取。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值