內(nèi)建函數(shù)str()和repr() (representation,表達(dá),表示)或反引號(hào)操作符(``)可以方便地以字符串的方式獲取對(duì)象的內(nèi)容、類型、數(shù)值屬性等信息。str()函數(shù)得到的字符串可讀性好(故被print調(diào)用),而repr()函數(shù)得到的字符串通常可以用來重新獲得該對(duì)象,通常情況下 obj==eval(repr(obj)) 這個(gè)等式是成立的。這兩個(gè)函數(shù)接受一個(gè)對(duì)象作為其參數(shù),返回適當(dāng)?shù)淖址?/p>
事實(shí)上repr()和``做一樣的事情,返回一個(gè)對(duì)象的“官方”字符串表示。其結(jié)果絕大多數(shù)情況下(不是所有)可以通過求值運(yùn)算(內(nèi)建函數(shù)eval())重新得到該對(duì)象。
str()則不同,它生成一個(gè)對(duì)象的可讀性好的字符串表示,結(jié)果通常無法用eval()求值,但適合print輸出。
如下例:
>>> class D(object):... def __str__(self):... return "a __str__"... def __repr__(self):... return "a __repr__"...>>> dr = D()>>> print dra __str__>>> dra __repr__>>> "%s" % dr'a __str__'>>> "%r" % dr'a __repr__'
為什么有了repr()還需要``?
Python中,有的操作符和函數(shù)是做同樣的事情,原因是某些場合下函數(shù)會(huì)比操作符更適合使用,比如函數(shù)對(duì)象可作為參數(shù)傳遞。雙星號(hào)(**)乘方運(yùn)算和pow()內(nèi)建函數(shù)都返回x的y次方.
聯(lián)系客服