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