学习
实践
活动
专区
工具
TVP
写文章

Python dis 模块初步使用

Python 代码先被编译为字节码后,再由Python虚拟机来执行字节码, Python的字节码是一种类似汇编指令的中间语言, 一个Python语句会对应若干字节码指令,虚拟机一条一条执行字节码指令 Python dis 模块支持对Python代码进行反汇编, 生成字节码指令。 先来一小段代码: In[6]: def test(): ... x = 1 ... return "no" 代码执行后会输出: In[7]: import dis In[8]: dis.dis(test) 2 0 LOAD_CONST 100表示在Python字节码定义中的索引,在python代码中,  可以通过dis.opname[100]查看,即为LOAD_CONST。而后的两个字节表示指令的参数。 而dis输出的字节码指令中, 第二列的字节码索引则是指当前指令在co_code序列中所在的位置。

80420
  • 广告
    关闭

    热门业务场景教学

    个人网站、项目部署、开发环境、游戏服务器、图床、渲染训练等免费搭建教程,多款云服务器20元起。

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    你了解 Python 字节码的原理吗?

    ok 不知道也没关系,接下来的时间我们所有的话题都将围绕字节码,在 Python 有一个模块可以通过反编译 Python 代码来生成字节码这个模块就是今天要说的--dis模块。 dis 模块的使用 dis 模块包括一些用于处理 Python 字节码的函数,可以将字节码“反汇编”为更便于人阅读的形式。查看解释器运行的字节码还有助于优化代码。 import dis dis.dis(hello) 函数 dis.dis() 将反汇编一个函数、方法、类、模块、编译过的 Python 代码对象、或者字符串包含的源代码,以及显示出一个人类可读的版本。 基本反汇编 函数 dis() 可以打印 Python 源代码(模块、类、方法、函数或代码对象)的反汇编表示。可以通过从命令行运行 dis 来反汇编 dis_simple.py 之类的模块。 ': import dis dis.dis(f) 运行命令 python3 dis_function.py 然后得到以下结果 2 0 LOAD_GLOBAL

    1.7K40

    python两个数值互换(浅析a,b=b,a原理)

    参考链接: 交换两个变量的Python程序 python交换两个值得方法非常简单,即a,b=b,a,一步操作就交换了两个值,那么这是为什么呢?  先看下面这段程序:  import dis def func(a,b):     a,b=b,a     print(a,b) a=10 b=20 func(a,b) dis.dis(func)  一般来说一个 Python语句会对应若干字节码指令,Python的字节码是一种类似汇编指令的中间语言,但是一个字节码指令并不是对应一个机器指 令(二进制指令),而是对应一段C代码,而不同的指令的性能不同,所以不能单独通过指令数量来判断代码的性能 一个Python的程序会有若干代码块组成,例如一个Python文件会是一个代码块,一个类,一个函数都是一个代码块,一个代码块会对应一个运行的上下文环境以及一系列的字节码指令。    dis的作用   dis模块主要是用来分析字节码的一个内置模块,经常会用到的方法是dis.dis([bytesource]),参数为一个代码块,可以得到这个代码块对应的字节码指令序列。

    86730

    白话Elasticsearch10-深度探秘搜索技术之基于dis_max实现best fields策略进行多字段搜索

    文章目录 概述 TF/IDF 链接 示例 DSL 普通查询 dis_max 查询 best fields策略-dis_max ? ---- 数据量少的时候,dis_max不生效的问题: https://stackoverflow.com/questions/38065692/dis-max-query-isnt-looking-for-the-best-matching-clause is best big data solution based on scala ,an programming language similar to java"}} 至此,数据构造完成 ,下面来看下dis_max 那看下dis_max吧 ---- dis_max 查询 GET /forum/article/_search { "query": { "dis_max": { "queries best fields策略 : 搜索到的结果,应该是某一个field中匹配到了尽可能多的关键词,被排在前面;而不是尽可能多的field匹配到了少数的关键词,排在了前面. dis_max语法,直接取多个

    23630

    通过机器学习的线性回归算法预测股票走势(用Python实现)

    在本人的新书里,将通过股票案例讲述Python知识点,让大家在学习Python的同时还能掌握相关的股票知识,所谓一举两得。 这里给出以线性回归算法预测股票的案例,以此讲述通过Python的sklearn库实现线性回归预测的技巧。 5 系列文总结和版权说明 本文是给程序员加财商系列,之前的系列文如下: 在我的新书里,尝试着用股票案例讲述Python爬虫大数据可视化等知识 以股票RSI指标为例,学习Python发送邮件功能 (含RSI指标确定卖点策略) 以预测股票涨跌案例入门基于SVM的机器学习 用python的matplotlib和numpy库绘制股票K线均线和成交量的整合效果(含量化验证交易策略代码) 用python 本文的内容即将出书,在出版的书里,是用股票案例和大家讲述Python入门时的知识点,敬请期待。 有不少网友转载和想要转载我的博文,本人感到十分荣幸,这也是本人不断写博文的动力。

    1.6K21

    Python字节码介绍

    访问和理解Python字节码 如果你也想玩玩这个,Python标准库中的dis模块就非常有用了; dis模块为Python字节码提供了一个“反汇编程序”,从而可以轻松获取人为可读的版本并查找各种字节码指令 dis模块的文档涵盖了相关内容,并提供了字节码指令以及它们的作用和参数的完整清单。 例如,要获取之前hello()函数的字节码列表,我将它键入Python解释器中,然后运行: ? 函数dis.dis()会对函数,方法,类,模块,编译过的Python代码对象或包含有源代码的字符串文字进行反汇编,并打印出可读的版本。dis模块中另一个方便的功能是distb()。 如果您想尝试手动反汇编函数,则可以使用列表dis.opname从十进制字节值中查找相应字节码指令的名称。 知道如何访问和读取Python字节码就可以让你找出答案(尝试:dis.dis("{}")与dis.dis("dict()"))。

    52930

    关注

    腾讯云开发者公众号
    10元无门槛代金券
    洞察腾讯核心技术
    剖析业界实践案例
    腾讯云开发者公众号二维码

    相关产品

    • Serverless HTTP 服务

      Serverless HTTP 服务

      Serverless HTTP 基于腾讯云 API 网关平台,为互联网业务提供 0 配置、高可用、弹性扩展的对外 RESTful API 能力,支持 swagger/ openAPI 等协议。便于客户快速上线业务逻辑,通过规范的 API 支持内外系统的集成和连接。

    相关资讯

    热门标签

    活动推荐

    扫码关注腾讯云开发者

    领取腾讯云代金券