ord()

作者: import_hello | 来源:发表于2018-09-21 14:37 被阅读0次

    转载须注明出处:简书@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. 如果没有独立的转义序列,最终会表示为十六进制转义序列

    总之,使用 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')
    

    相关文章

      网友评论

          本文标题:ord()

          本文链接:https://www.haomeiwen.com/subject/slmviftx.html