chr 函数不接受更高答案有什么具体原因吗?

Is there any specific reason why the chr function won't accept a higher answer?

有人知道如果我输入大于 1114111 的数字,chr 函数会抛出错误的具体原因吗? 例如:

>>> chr(1114111)
'\U0010ffff'
>>> chr(1114112)

Traceback (most recent call last): File "", line 1, in chr(1114112) ValueError: chr() arg not in range(0x110000)

是的,一个特定的原因。这是因为那是Unicode代码中的最高代码点space。来自当前标准 (12.0),1.3 Text handling 部分,在 Text elements 下:

An encoded character is represented by a number from 0 to 10ffff<sub>16</sub>, called a code point.

数字需要在一定范围内才能有效,因此不接受大于或等于 0x110000 的数字,因为这是 unicode 代码中不存在的最小正整数 space.