PYTHON中 str 函式和 repr

2021-09-26 06:59:49 字數 1596 閱讀 2080

(自學python中,學習中總結的經驗部落格,如有錯誤,還請諒解)

python中定義乙個類時,常用__str__以及__repr__函式輸出這個類的具體描述,但這兩個函式具體又有些什麼區別呢?一句話總結的話:__repr__比__str__的使用要求更加嚴格,優先順序更低。

優先順序比較`:

class my_func (object):

def __init__(self,name):

self.name=name

def __str__(self):

print("這是乙個__str__函式")

return self.name

def __repr__(self):

print("這是乙個__repr__函式")

return self.name

def main():

fun=my_func('doge')

print(fun)

if __name__=='__main__':

main()

執行結果:

這是乙個__str__函式

doge

從上面可以看出,當使用print()輸出類的描述時,會優先尋找__str__函式的解釋。

使用要求比較:

1.

class my_func (object):

def __init__(self,name):

self.name=name

def __repr__(self):

print("這是乙個__repr__函式")

return self.name

def main():

fun=my_func('doge')

print(str(fun))

if __name__=='__main__':

main()

執行結果:

這是乙個__repr__函式

doge

當類方法中沒有定義__str__時,呼叫__str__函式並不會輸出預設的位址值,而是會呼叫存在的__repr__函式

class my_func (object):

def __init__(self,name):

self.name=name

def __str__(self):

print("這是乙個__str__函式")

return self.name

def main():

fun=my_func('doge')

print(repr(fun))

if __name__=='__main__':

main()

結果:

<__main__.my_func object at 0x000001f1e4072518>
當類中並沒有定義__repr__時,不會再呼叫__str__,而是會直接輸出預設值即記憶體中的位址。

另:這兩個函式的return值都應該是字元,不能return乙個整型或其他值。

Python中str 和repr 函式的區別

在 python 中要將某一型別的變數或者常量轉換為字串物件通常有兩種方法,即 str 或者 repr 區別與使用 函式str 用於將值轉化為適於人閱讀的形式,而repr 轉化為供直譯器讀取的形式 如果沒有等價的語法,則會發生syntaxerror 異常 適合開發和除錯階段使用。number 123...

Python內建函式str 和repr

內建函式str 和repr representation,表達,表示 或反引號操作符 可以方便地以字串的方式獲取物件的內容 型別 數值屬性等資訊。str 函式得到的字串可讀性好 故被print呼叫 repr 函式得到的字串通常可以用來重新獲得該物件,通常情況下 obj eval repr obj 這...

Python中re模組常用函式

re.match re.match 嘗試從字串的開始匹配乙個模式,如 下面的例子匹配第乙個單詞。import re text jgood is a handsome boy,he is cool,clever,and so on.m re.match r w s text if m print m....