资讯专栏INFORMATION COLUMN

【Python】查看函数的汇编指令

chnmagnus / 3225人阅读

摘要:背景今天在看一篇介绍生成器的文章的时候无心插柳了解到一个很有趣的标准库,可以用于查看函数的汇编指令,从而理解代码的执行机制。相关技术,模块代码感想标准库博大精深啊。

背景

今天在看一篇介绍Python生成器的文章的时候无心插柳了解到一个很有趣的Python标准库dis,可以用于查看函数的汇编指令,从而理解Python代码的执行机制。

相关技术

Python3, dis模块

代码
In [50]: dis(lambda x: x ** 2 if isinstance(x, int) else "Hello, {}".format(x) if isinstance(x, str)
    ...:  else "Unknown type.")
  1           0 LOAD_GLOBAL              0 (isinstance)
              3 LOAD_FAST                0 (x)
              6 LOAD_GLOBAL              1 (int)
              9 CALL_FUNCTION            2 (2 positional, 0 keyword pair)
             12 POP_JUMP_IF_FALSE       23
             15 LOAD_FAST                0 (x)
             18 LOAD_CONST               1 (2)
             21 BINARY_POWER
             22 RETURN_VALUE
        >>   23 LOAD_GLOBAL              0 (isinstance)
             26 LOAD_FAST                0 (x)
             29 LOAD_GLOBAL              2 (str)
             32 CALL_FUNCTION            2 (2 positional, 0 keyword pair)
             35 POP_JUMP_IF_FALSE       51
             38 LOAD_CONST               2 ("Hello, {}")
             41 LOAD_ATTR                3 (format)
             44 LOAD_FAST                0 (x)
             47 CALL_FUNCTION            1 (1 positional, 0 keyword pair)
             50 RETURN_VALUE
        >>   51 LOAD_CONST               3 ("Unknown type.")
             54 RETURN_VALUE
感想

Python标准库博大精深啊。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/38141.html

相关文章

  • 重学计算机组成原理(四)- 玩玩纸带编程

    摘要:汇编器是怎么把对应的汇编代码,翻译成为机器码的。总结打孔卡,其实就是一种存储程序型计算机。推荐阅读了解的指令集参看计算机组成与设计软硬件接口第版的小节参考深入浅出计算机组成原理 你在学写程序的时候,有没有想过,古老年代的计算机程序是怎么写出来的?showImg(https://ask.qcloudimg.com/http-save/1752328/fpfs9776q8.png); 当...

    lentrue 评论0 收藏0
  • 程序编译和预处理

    摘要:总结上面的过程中,我们已经将源程序经过预处理编译汇编阶段变成了二进制代码,这三个过程我们都是用两种方法完成的,一种是参数的方法,另一种是使用系统默认的预处理器,编译器,汇编器。 目录 1. 程序的翻译环境和执行环境 2. 详解编译+链接 2.1 翻译环境 2.2 编译本身也分为几个阶段:  ...

    CarlBenjamin 评论0 收藏0
  • 【PHP7源码分析】PHP7语言执行原理

    摘要:在中,源代码首先将进行词法分析,将源代码切割为多个字符串单元,分割后的字符串称之为。图以为例解释型语言的执行示意图第步源码通过词法分析得到第步基于语法分析器生成抽象语法树第步抽象语法树转换为指令集合,解释执行。 顺风车运营研发团队 李志 发表在程序人生 公众号我们常用的高级语言有很多种,比较出名的有CC++、Python、 PHP、Go、Pascal等。而这些语言根据运行的方式不同,...

    VEIGHTZ 评论0 收藏0
  • Linux环境基础开发工具使用

    摘要:按恢复刚刚的撤销。按将光标所在位置开始往后的个字删除,并进入插入模式。跳至指定的行列出光标所在行的行号。退出,如果无法离开,可在后面跟一个表示强制退出。和默认生成的二进制程序是动态链接的,可以使用指令查看。 ...

    yintaolaowanzi 评论0 收藏0
  • C语言进阶:程序预处理

    摘要:程序预处理本章节研究的是,源代码文件是如何一步步得到一个可执行程序的。如的语句被称为预处理指令,还有注释文本的删除,都在此阶段完成替换。目的是能够将所有文件中的代码组合到一起成一个完整的程序。终止程序可以正常也可以意外终止程序。 ...

    gxyz 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<