代码之家  ›  专栏  ›  技术社区  ›  CIsForCookies

“unicode=unicode”是什么意思?

  •  2
  • CIsForCookies  · 技术社区  · 7 年前

    过去 pyxml module

    这个任务的意思是什么?

    if sys.version_info >= (3,0):
        def u(s):
            return s
        def unicode(x, errors=None):
            if hasattr(x, '__unicode__'):
                return x.__unicode__()
            return str(x)
    else:
        def u(s):
            return unicode(s)
        unicode = unicode  #  <<<<<< This one >>>>>>>>
    
    1 回复  |  直到 7 年前
        1
  •  2
  •   MisterMiyagi    7 年前

    它绑定内置名称 unicode 模块全局名称(也被命名为 统一码 )这模仿了 def unicode 创建模块全局名称。因此,任何一个分支都允许获取名称。

    from module import unicode  # unicode is defined in all cases
    

    因为模块全局总是在 builtins 模块,它还加快了 统一码 姓名。对于经常使用的内置名称,这可以提高整体性能。

    $ python3 -m perf timeit 'str("hello world")'
    .....................
    Mean +- std dev: 150 ns +- 12 ns
    $ python3 -m perf timeit -s 'import builtins' -s 'str = builtins.str' 'str("hello world")'
    .....................
    Mean +- std dev: 124 ns +- 3 ns
    
    $ pypy3 -m perf timeit 'str("hello world")'
    .........
    Mean +- std dev: 8.28 ns +- 0.39 ns
    $ pypy3 -m perf timeit -s 'import builtins' -s 'str = builtins.str' 'str("hello world")'
    ........
    Mean +- std dev: 0.65 ns +- 0.01 ns