Python中chr(128).. chr(255)的意义何在?

mal*_*ana 8 python ascii

编辑:我在谈论Python 2.7中的行为.

chr函数将0到127之间的整数转换为ASCII字符.例如

>>> chr(65)
'A'
Run Code Online (Sandbox Code Playgroud)

我知道这在某些情况下是如何有用的,我理解为什么它涵盖了0..127,7位ASCII范围.

该函数还接受128..255的参数.对于这些数字,它只返回参数的十六进制表示.在此范围内,根据ISO-8859标准的哪个部分使用,不同的字节意味着不同的东西.

我知道如果chr再拿一个论点,比如说

>>> chr(228, encoding='iso-8859-1') # hypothetical
'ä'
Run Code Online (Sandbox Code Playgroud)

但是,没有这样的选择:

chr(i) -> character

Return a string of one character with ordinal i; 0 <= i < 256.
Run Code Online (Sandbox Code Playgroud)

我的问题是:什么是养点ValueError进行i > 255,而不是i > 127?所有函数128 <= i < 256都是返回十六进制值?

kin*_*all 10

在Python 2.x中,a str是一个字节序列,因此chr()返回一个字节的字符串并接受0-255范围内的值,因为这是一个可由字节表示的范围.当您打印repr()字符串在128-255范围内的字符串时,字符以转义格式打印,因为没有标准方法来表示此类字符(ASCII仅定义0-127).unicode()但是,您可以使用它将其转换为Unicode ,并指定源编码:

unicode(chr(200), encoding="latin1")
Run Code Online (Sandbox Code Playgroud)

在Python 3.x中,str是一系列Unicode字符,chr()需要更大的范围.字节由bytes类型处理.