Python 2.x - 为什么字符串包含未在输出中编码的列表?

时间:2015-04-21 20:21:21

标签: python encoding

当我运行这个python脚本时:

#!/usr/bin/env python
# coding: windows-1250
lst = ['č']
s = 'č'
print lst
print s

我得到了这个输出:

['\xc4\x8d']
č

为什么它们看起来不同?

1 个答案:

答案 0 :(得分:4)

理论

print s调用s.__str__(),它返回一个编码字符串。

但是,print lst会调用lst.__str__(),而__repr__()会在列表成员上调用__str__。与__repr__不同,class Test(object): def __str__(self): return "__str__ was called" def __repr__(self): return "__repr__ was called" if __name__ == "__main__": print Test() print [Test(), Test()] 会返回已编码的字符串。

实践

您可以使用以下测试代码进行确认:

__str__ was called
[__repr__ was called, __repr__ was called]

将输出:

{{1}}