相关疑难解决方法(0)

为什么Python 2中的生成器表达式和字典/集合理解使用嵌套函数而不像列表推导?

列表推导将其代码直接放在使用它们的函数中,如下所示:

>>> dis.dis((lambda: [a for b in c]))
  1           0 BUILD_LIST               0
              3 LOAD_GLOBAL              0 (c)
              6 GET_ITER            
        >>    7 FOR_ITER                12 (to 22)
             10 STORE_FAST               0 (b)
             13 LOAD_GLOBAL              1 (a)
             16 LIST_APPEND              2
             19 JUMP_ABSOLUTE            7
        >>   22 RETURN_VALUE        
Run Code Online (Sandbox Code Playgroud)

而生成器表达式和字典/集合理解主要放在一个单独的嵌套函数中,如下所示:

>>> dis.dis((lambda: {a for b in c}))
  1           0 LOAD_CONST               1 (<code object <setcomp> at 0x7ff41a3d59b0, file "<stdin>", line 1>)
              3 MAKE_FUNCTION            0
              6 LOAD_GLOBAL              0 (c)
              9 GET_ITER            
             10 CALL_FUNCTION            1
             13 RETURN_VALUE        

>>> dis.dis((lambda: {a for …
Run Code Online (Sandbox Code Playgroud)

python bytecode python-internals

8
推荐指数
1
解决办法
179
查看次数

标签 统计

bytecode ×1

python ×1

python-internals ×1