python---str和repr
在 Python 中要將某一類型的變量或者常量轉(zhuǎn)換為字符串對象通常有兩種方法,即 str() 或者 repr() 。
區(qū)別與使用
函數(shù)str() 用于將值轉(zhuǎn)化為適于人閱讀的形式,而repr() 轉(zhuǎn)化為供解釋器讀取的形式(如果沒有等價的語法,則會發(fā)生SyntaxError 異常), 適合開發(fā)和調(diào)試階段使用。?
| 1 2 3 4 5 6 7 8 9 | >>>?number?=?123456789 >>>?type(str(number)) <class?'str'> >>>?type(repr(number)) <class?'str'> >>>?print(repr(number)) 123456789 >>>?print(str(number)) 123456789 |
兩個函數(shù)返回的類型是相同的,值也是相同的。
| 1 2 3 4 | >>>?print(str('123456789')) 123456789 >>>?print(repr('123456789')) '123456789' |
但當(dāng)我們把一個字符串傳給 str() 函數(shù)再打印到終端的時候,輸出的字符不帶引號。而將一個字符串傳給 repr() 函數(shù)再打印到終端的時候,輸出的字符帶有引號。
造成這兩種輸出形式不同的原因在于:
print 語句結(jié)合 str() 函數(shù)實際上是調(diào)用了對象的 __str__ 方法來輸出結(jié)果。而 print 結(jié)合 repr() 實際上是調(diào)用對象的 __repr__ 方法輸出結(jié)果。下例中我們用 str 對象直接調(diào)用這兩個方法,輸出結(jié)果的形式與前一個例子保持一致。
| 1 2 3 4 | >>>?print('123456789'.__repr__()) '123456789' >>>?print('123456789'.__str__()) 123456789 |
不同數(shù)據(jù)類型的不同處理
某對象沒有適于人閱讀的解釋形式的話, str() 會返回與repr()等同的值。很多類型,諸如數(shù)值或鏈表、字典這樣的結(jié)構(gòu),針對各函數(shù)都有著統(tǒng)一的處理方式。
代碼實例:
| 1 2 3 4 5 6 | >>>?listA?=?[1,2,3] >>>?str(listA) '[1,?2,?3]' >>>?repr(listA) '[1,?2,?3]' >>> |
結(jié)果是相同的。
?
而字符串和浮點數(shù),它們的處理方式不同。
注意:Python3和Python2版本str函數(shù)處理浮點數(shù)時是不同的,Python3版本下,str和repr會返回相同的結(jié)果,Python2下則不會, 具體看下面的例子:
Python3版本:
| 1 2 3 4 5 6 7 8 9 | >>>?string?=?'Hello,?PythonTab.com' >>>?str(string) 'Hello,?PythonTab.com' >>>?repr(string) "'Hello,?PythonTab.com'" >>>?str(1.0/7.0) '0.14285714285714285' >>>?repr(1.0/7.0) '0.14285714285714285' |
?
Python2版本:
| 1 2 3 4 | >>>?str(1.0/7.0) '0.142857142857' >>>?repr(1.0/7.0) '0.14285714285714285' |
轉(zhuǎn)載于:https://www.cnblogs.com/Kingfan1993/p/9636602.html
總結(jié)
以上是生活随笔為你收集整理的python---str和repr的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: css pointer-event
- 下一篇: (三)PYTHON字典 元祖 列表尝试应