在 Python 中要將某一類型的變量或者常量轉換爲字符串對象一般有兩種方法,即 str() 或者 repr() 。python
區別與使用
函數str() 用於將值轉化爲適於人閱讀的形式,而repr() 轉化爲供解釋器讀取的形式(若是沒有等價的語法,則會發生SyntaxError 異常), 適合開發和調試階段使用。 函數
>>> number = 123456789 >>> type(str(number)) <class 'str'> >>> type(repr(number)) <class 'str'> >>> print(repr(number)) 123456789 >>> print(str(number)) 123456789
兩個函數返回的類型是相同的,值也是相同的。調試
>>> print(str('123456789')) 123456789 >>> print(repr('123456789')) '123456789'
但當咱們把一個字符串傳給 str() 函數再打印到終端的時候,輸出的字符不帶引號。而將一個字符串傳給 repr() 函數再打印到終端的時候,輸出的字符帶有引號。對象
形成這兩種輸出形式不一樣的緣由在於:blog
print 語句結合 str() 函數其實是調用了對象的 __str__ 方法來輸出結果。而 print 結合 repr() 其實是調用對象的 __repr__ 方法輸出結果。下例中咱們用 str 對象直接調用這兩個方法,輸出結果的形式與前一個例子保持一致。開發
>>> print('123456789'.__repr__()) '123456789' >>> print('123456789'.__str__()) 123456789
不一樣數據類型的不一樣處理
某對象沒有適於人閱讀的解釋形式的話, str() 會返回與repr()等同的值。不少類型,諸如數值或鏈表、字典這樣的結構,針對各函數都有着統一的處理方式。字符串
代碼實例:string
>>> listA = [1,2,3] >>> str(listA) '[1, 2, 3]' >>> repr(listA) '[1, 2, 3]' >>>
結果是相同的。
而字符串和浮點數,它們的處理方式不一樣。
注意:Python3和Python2版本str函數處理浮點數時是不一樣的,Python3版本下,str和repr會返回相同的結果,Python2下則不會, 具體看下面的例子:class
Python3版本:變量
>>> 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版本:
>>> str(1.0/7.0) '0.142857142857' >>> repr(1.0/7.0) '0.14285714285714285'