查询Python len()函数返回看似错误值的相关官方文档
关于Python len()函数的文档说明
代码示例
$ python Python 3.8.10 (default, Nov 14 2022, 12:59:47) [GCC 9.4.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> for name in ["Blue Oyster Cult", "Blue Öyster Cult", "Spinal Tap", "Spın̈al Tap"]: ... print(f'{len(name):3d} {name}') ... 16 Blue Oyster Cult 16 Blue Öyster Cult 10 Spinal Tap 11 Spın̈al Tap >>> quit()
文档相关说明
Python官方文档中,len()函数的定义是返回对象包含的元素个数,对于字符串来说,这里的“元素”指的是Unicode码位(code points)。
像Spın̈al Tap这类包含组合字符的字符串,其中的n̈是由基础字符n(U+006E)和分音符组合标记(U+0308)两个独立码位构成的,len()会将它们分别计数,所以返回结果是11。
官方文档并没有把这种情况描述为“错误结果”,反而在字符串相关文档里明确说明:字符串是Unicode码位的序列,len()统计的是码位数量,而非视觉上的字形或字符个数。
内容的提问来源于stack exchange,提问作者Ray Butterworth
相关产品推荐
相关产品推荐

