林不解以下幾點:蟒紋的unicode「異常」
>>>
>>> a
'abc'
>>> z
u'xyz'
>>> print a,z
abc xyz
>>> print (a,z)
('abc', u'xyz')
>>> print [a,z]
['abc', u'xyz']
>>> print (a,str(z))
('abc', 'xyz')
什麼是當一個隱式類型轉換做了規則,當其不?
林不解以下幾點:蟒紋的unicode「異常」
>>>
>>> a
'abc'
>>> z
u'xyz'
>>> print a,z
abc xyz
>>> print (a,z)
('abc', u'xyz')
>>> print [a,z]
['abc', u'xyz']
>>> print (a,str(z))
('abc', 'xyz')
什麼是當一個隱式類型轉換做了規則,當其不?
這是一個unicode對象的str
和repr
之間的差異。 repr
旨在給你一個等價的對象,如果你粘貼回Python,所以它包括u
; str
是爲了人類的可讀性而設計的,所以它沒有。字符串的str
和repr
是相同的(它們只是相同的字符串)。
這裏的相關規則被用於其中的一個是:
repr
print
使用str
print a,z
打印兩個物體通過分隔空間 - 它解析爲print (a), (z)
。它使用print(a, z)
的str
構建並打印包含這兩個對象的元組。 print [a,z]
的行爲相似,只不過它建立並打印列表。在這兩種情況下,print
都使用容器的str
--對於元組和列表都使用其內容的repr
。print(a, str(z))
電話str(z)
第一,並把它的結果的元組 - 並讓字符串被使用,而不是z
的再版中的再版。哦,我看到,打印不會遞歸到結構中。謝謝。 [這個彈出來,試圖找出我從id3標籤vs FLAC誘變得到什麼,以及一些'診斷'輸出來判斷是否得到字符串或unicode] – RFlack
Python 2中不執行添加Unicode字符串(它們是unicode
類型的)到一個字節字符串(它們是str
類型)時除外隱式類型轉換(Python 3中不執行隱式類型轉換)。 str
將對象轉換爲字節字符串(它正在做顯式轉換,而不是隱式轉換)。
不同之處在於是否使用__repr__或__str__。 – Hyperboreus