Python中关于str()函数和repr()函数的那些事
来源:互联网 发布:社会融资规模数据特点 编辑:程序博客网 时间:2024/06/05 17:32
相信很多小伙伴跟我一样,对于Python中的str函数和repr函数,有很多地方都是很不解,博主也是这样,于是决定从最开始的文档,然后一个一个print去看结果然后,就这样一直print,print总算是大致上理解其区别,话不多少直接上例子。
Python中的str( )和repr( )两个函数的区别,都是可以将任意的值转化为字符串:函数str( )将其转化成为适于人阅读的形式,而repr(object)就是转换成为阅读器阅读的形式, 返回一个可以用来表示对象的可打印字符串,用eval( )函数还可以返回相应的对象,下面直接上例子来说明这两个函数的用法。
对于字符串: a = ‘hello, world!\n’
>>> a'hello, world!\n' #输出的a本来的模样>>> print(a) #对a经过加工后输出,将转义字符进行转义hello,world!>>> print(str(a)) #可以看到对str返回的值进行print处理,这将与直接print(a)得到相同的结果hello,world! >>> repr(a) #获得一种机器阅读的形式,也就是这个变量背地里是什么样子的。"'hello, world!\n'">>> print(repr(a)) #对于repr返回的值进行print处理,可以看到这与直接在终端输入a,得到的是相同的结果'hello,world!\n'
以上就是最基本的在字符串的显示中的使用,对应指令和输出结果及注释相信大家很容易都能看明白,接下来说一下这两个函数另外的作用。
在类中的使用,可以定义一些在实例运行时,控制repr()函数作用在其实例上时的行为。
class test(object): def __init__(self, data): self.data = data仅仅是这样的话我们进行如下操作:>>> t = test(100)>>> t<__main__.test at 0x4db85f8>>>> print(t)<__main__.test at 0x4db85f8>>>> str(t)'<__main__.test at 0x4db85f8>'>>> repr(t)'<__main__.test at 0x4db85f8>'
在类中没有方法的时候,如果直接在终端输入类的实例,不会输出任何东西的,上面显示的内容是由于类的特殊方法(基本定制型)有str()和repr(), 在print(object)和直接运行实例的时候回打印字符串。如果没有实现(覆盖)该函数,就会出现上面的结果。
那我们定义一个str函数来看看效果:
class test(object): def __init__(self, data): self.data = data def __str__(self): return "ss">>> t = test(100)>>> t<__main__.test at 0x4db85f8>>>> str(t)'ss'>>>print(t)ss>>>repr(t)<__main__.test at 0x4db85f8>
可以看到在这里直接输入t还会跟上面的例子的结果一致,但是str(t)和print(t)已经发生了改变,不难看出显示的是我们在类中定义的str()函数的返回值,而rerp(t)还是 跟上个例子一样,下面我们也来实现一个str()函数来看一看效果。
class test(object): def __init__(self, data): self.data = data def __str__(self): return "ss" def __repr__(self): return "gg">>> t = test(100)>>> tgg>>> str(t)'ss'>>>print(t)ss>>>repr(t)'gg'>>> print(repr(t))gg
好了,可以很清楚的明白,默认的str() repr()函数与重构后的区别,以及这两者与直接输入和经过print处理以后的关系了吧。
也就是直接在终端输入对象,相当于调用print(repr(oblect))函数,如果没有被复写则会出现上面最开始的那种显示形式;而print(object)函数相当于调用了print(str(object))这个函数,如果没有被复写就是使用的默认的,也会出现上面的显示结果。
下面还有一个对于repr( )函数的说明:
Python中这个repr函数,对应repr(object)这个函数,返回一个可以用来表示对象的可打印字符串:
1.尝试生成这样一个字符串,将其传给 eval()可重新生成同样的对象 ;
2.否则,生成用尖括号包住的字符串,包含类型名和额外的信息(比如地址) ;
3.一个类(class)可以通过 repr() 成员来控制repr()函数作用在其实例上时的行为。
Python中,有的操作符和函数是做同样的事情,原因是某些场合下函数会比操作符更适合使用,比如函数对象可作为参数传递。
希望我的文章能够帮到你,喜欢的可以点一波关注!!您的支持是博主坚持的动力~~~
- Python中关于str()函数和repr()函数的那些事
- Python 的repr() 和str() 函数
- python的str()和repr()函数比较
- Python repr str 函数
- Python repr() 函数和str() 函数
- Python里str函数和repr函数的区别
- Python里str函数和repr函数的区别
- python函数 cmp() type() str() repr()和 ''
- Python内建函数str()和repr()
- python 内建函数 str() 和 repr() 的区别
- python 内建函数 str() 和 repr() 的区别
- Python repr() 或str() 函数
- Python repr() 或str() 函数
- Python repr() 或str() 函数
- Python repr() 或str() 函数
- Python repr() 或str() 函数
- python中repr和 str的异同
- python的str()和repr()的区别
- P和NP问题
- Java学习笔记-ArrayList(2)和LinkedList
- DELPHI XE 调用 DELPHI 7 写的DLL的问题
- hdu 1598 find the most comfortable road
- 代价函数总结
- Python中关于str()函数和repr()函数的那些事
- 构建Linux驱动开发环境全过程(X210bv3)
- 基于@AspectJ和Schema的AOP(精通Spring+4.x++企业应用开发实战 第八章)
- 博客竟然被黑了
- 智力题:烧一根不均匀的绳子,从头烧到尾是要1个小时.现在有若干条材质相同的绳子 问如何用烧绳的方法来计时一个小时15分钟.
- 适配IE浏览器的那些坑
- Burp Suite中proxy的简单用法
- ES6标签模板
- 获取本地端口