林不解以下几点:蟒纹的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