ord()

转载须注明出处:@Orca_J35
ord(c)
该函数用于获取 c 的 Unicode 码点,并以整数形式表示。c 表示一个 Unicode 字符,不过由于 Python 的内置类型中并不包含字符类型,所有 c 实际上是一个长度为 1 的字符串,并且其中仅包含一个 Unicode 字符。另外,chr()ord() 的功能正好相反。示例:
>>> ord('鲸') 40120 >>> ord('€') 8364 >>> ord('a') 97

同一码点的不同转义序列('\xhh','\ooo','\uhhhh', '\Uhhhhhhhh'),对 ord 完全等效:
>>> ord('\x61'),ord('\141'),ord('\u0061'),ord('\U00000061'),ord('a') (97, 97, 97, 97, 97)

'\xhh' 和 '\ooo' 在字符串字面值中,十六进制('\xhh')和八进制('\ooo')转义序列用于表示指定码点的 Unicode 字符(hh 以十六进制表示指定码点;ooo 以八进制表示指定码点)。也就是说,在字符串字面值中使用这两种转义序列的效果,与直接使用 Unicode 字符完全相同。
对于可见 Unicode 字符,这两种转义序列最终都会以 Unicode 字符表示;对于不可见 Unicode 字符,转义序列的最终表示方式分以下两种情况:
  1. 如果"不可见字符"拥有独立的转义序列,最终会表示为该独立的转义序列
  2. 如果没有独立的转义序列,最终会表示为十六进制转义序列
总之,使用十六进制(或八进制)转义序列,与直接使用对应码点的 Unicode 字符完全等效,只是表示方式不一样而已。
# 转义序列与Unicode字符都表示同一对象 >>> '\x61' is '\141' is '\u0061' is 'a' True# 对于可见字符,最终都会表示为可见的Unicode字符 >>> '\x61','\141','\u0061','a' ('a', 'a', 'a', 'a') # 对于拥有独立转义字符的不可见Unicode字符,最终都会表示为独立的转义字符 >>> '\x0a','\012','\u000a','\n' ('\n', '\n', '\n', '\n') # 对于没有独立转义字符的不可见Unicode字符,最终都会表示为十六进制转义符 >>>>>> '\x01','\001','\u0001' ('\x01', '\x01', '\x01')

'\uhhhh' 和 '\Uhhhhhhhh' 在字符串字面值中,Unicode 转义序列 '\uhhhh''\Uhhhhhhhh' 用于表示指定码点的 Unicode 字符(hhhhhhhhhhhh 以十六进制表示指定码点,后者表示的码点范围更宽)。也就是说,在字符串字面值中使用 Unicode 转义序列的效果,与直接使用 Unicode 字符完全相同。
对于可见 Unicode 字符,转义序列最终都会以 Unicode 字符表示;对于不可见 Unicode 字符,转义序列的最终表示方式分以下两种情况:
  1. 如果"不可见字符"拥有独立的转义序列,最终会表示为该独立的转义序列
  2. 如果没有独立的转义序列,最终会表示为十六进制转义序列
【ord()】总之,使用 Unicode 转义序列,与直接使用对应码点的 Unicode 字符完全等效(无论是否可见),只是表示方式不一样而已。
# 转义序列与Unicode字符都表示同一对象 >>> '\x61' is '\141' is '\u0061' is '\U00000061' is 'a' True# 对于可见字符,最终都会表示为可见的Unicode字符 >>> '\x61','\141','\u0061','\U00000061','a' ('a', 'a', 'a', 'a', 'a') # 对于拥有独立转义字符的不可见Unicode字符,最终都会表示为独立的转义字符 >>> '\x0a','\012','\u000a','\U0000000a','\n' ('\n', '\n', '\n', '\n', '\n') # 对于没有独立转义字符的不可见Unicode字符,最终都会表示为十六进制转义符 >>>>>> '\x01','\001','\u0001','\u00000001' ('\x01', '\x01', '\x01', '\x01')

    推荐阅读