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

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核心编程》(第二版) 人民邮电出版社出版发行

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 字符集和编码简介 在编程中常常可以见到各种字符集和编码,包括ASCII,MBCS,Unicode等字符集。确切的说...
    兰山小亭阅读 12,795评论 0 13
  • No.1 python交互界面(解释器)提示符 Python的交互界面有两种提示符,分别是主提示符“>>>”和次提...
    无聊的IT阅读 5,152评论 0 5
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 8,451评论 0 4
  • 序 我的老家产铁矿。矿石夹在岩层中。 我老家的山高而袤,不是用于赏风景的奇山峻岭,但它内藏丰富。 露在外面的岩层像...
    温霄冰阅读 1,332评论 0 0
  • 最近天气变暖,从幼儿园接大宝放学后他总要和小朋友一起在小区里玩一会儿才回家。因为一起玩的基本都是小男孩,所以带有竞...
    何池荫阅读 2,662评论 0 3