全部博文(2065)
分类: Python/Ruby
2010-06-11 08:51:47
str()和 repr() (及 `` 操作符)
时间:
内建函数str()和repr()或反引号操作符(``)可以方便地以字符串的方式获取对象的内容、类型、数值属性等信息。str()函数得到的字符串可 读性好,而repr()函数得到的字符串通常可以用来重新获得该对象,通常情况下obj == eval(repr(obj)) 这个等式是成立的。这两个函数接受一个对象作为其参数,返回适当的字符串。
笔记:str() 与 repr() 函数均接受对象作为参数。返回的是适当的字符串。
>>> str(4.53-2j)
'(4.53-2j)' 返回一段字符串
>>> eval(repr([0, 5, 9, 9]))
[0, 5, 9, 9] 先将对象通过repr转成字符串再用eval转成对象
str()致力于生成一个对象的可读性好的字符串表示,它的返回结果通常无法用于eval()求值
这是两者之间的区别了。Str() 只是为了可读性而已。
需要再次提醒的是,并不是所有repr()返回的字符串都能够用 eval()内建函数得到原来的对象。请问能举例?
>>> import os
>>> eval(repr(os)) 举这个例子吧!
也就是说 repr() 输出对 Python比较友好,而str()的输出对用户比较友好。虽然如此,很多情况下这三者的输出仍然都是完全一样的。
笔记:repr() 将对象转成字符串。为的是让python比较友好。可以用eval再转回去只是部分。而str() 为了给用户更好的友好。
如果一个变量是对象的话或者你也不确定的时候最好将春转成字符串。最好是转成字符串