[阅读this tutorial时,我发现__unicode__
和__str__
方法之间存在以下差异:
由于存在这种差异,在混合物2中还有另一个dunder方法,用于控制Python 2:
__unicode__
中的字符串转换。在Python 2中,__str__
返回字节,而__unicode__
返回字符。
这里到底如何定义“字符”和“字节”?例如,在C中,一个char是一个字节,所以char =一个字节就不会吗?或者,这是指(可能)unicode字符,可能是多个字节?例如,如果我们采取以下措施:
Ω (omega symbol)
03 A9 or u'\u03a9'
在python中,这将被视为一个字符(Ω
)和两个字节,还是两个字符(03 A9
)和两个字节?或者也许我混淆了char
和character
之间的区别?
在Python中,u'\u03a9'
是由single Unicode字符Ω
(U + 03A9)组成的字符串。该字符的内部表示形式是实现细节,因此询问所涉及的字节没有任何意义。
但是,两字节序列'\xce\xa9'
可以解释为U + 03A9的UTF-8编码。
>>> u'\u03a9'.encode('utf-8')
'\xce\xa9'
>>> '\xce\xa9'.decode('utf-8')
u'\u03a9'