为了账号安全,请及时绑定邮箱和手机立即绑定

怎样理解python数组中的for语句?

怎样理解python数组中的for语句?

暮色呼如 2019-01-02 17:14:49
def f(x):return(10*x)a=[1,2,3]b=[f(t) for t in a]print(b)结果:[10, 20, 30]意思能够理解,但是我想知道编译器在读取b=[f(t) for t in a] 这一句是怎么拆解成一步步命令的?感觉很神奇,就这么一句就做了好多步骤。。。谢谢
查看完整描述

1 回答

?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

了解一下堆栈虚拟机和字节码
python用dis模块将程序反编译为字节码对应的操作码。

>>> import dis>>> def f(x):
    return(10*x)>>> def x():
    a=[1,2,3]    for i in a:
        b=f(i)
        print(b)        
>>> dis.dis(x)  2           0 LOAD_CONST               1 (1)              3 LOAD_CONST               2 (2)              6 LOAD_CONST               3 (3)              9 BUILD_LIST               3
             12 STORE_FAST               0 (a)  3          15 SETUP_LOOP              36 (to 54)             18 LOAD_FAST                0 (a)             21 GET_ITER        >>   22 FOR_ITER                28 (to 53)             25 STORE_FAST               1 (i)  4          28 LOAD_GLOBAL              0 (f)             31 LOAD_FAST                1 (i)             34 CALL_FUNCTION            1 (1 positional, 0 keyword pair)             37 STORE_FAST               2 (b)  5          40 LOAD_GLOBAL              1 (print)             43 LOAD_FAST                2 (b)             46 CALL_FUNCTION            1 (1 positional, 0 keyword pair)             49 POP_TOP             50 JUMP_ABSOLUTE           22
        >>   53 POP_BLOCK        >>   54 LOAD_CONST               0 (None)             57 RETURN_VALUE>>>


查看完整回答
反对 回复 2019-01-02
  • 1 回答
  • 0 关注
  • 946 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信