是否可以不使用co\u代码就获得python字节码?

2024-09-20 23:00:06 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我在python解释器中,定义一个函数,如下所示:

def h(a):
  return a

如果我想查看字节码(不是使用dis的反汇编),我通常可以使用h.func_code.co_code。有没有其他方法可以查看字节码?在

例如,在解释器中,如果我只输入h而不进行函数调用,则会得到函数的地址。我能用那个地址得到字节码吗?有别的办法吗?在

来自评论的一些附加信息:

该应用程序是用python编写的,并使用Py2App、cx_freeze或py2exe等打包。我在可执行文件上耍了些小把戏,现在,当启动时,可执行文件将我转储到python命令行。从那里,我手动地在interepeter中输入我的函数h。在

存在h.func_code的其他属性,例如co_varnamesco_argcount等,但是{}没有。在

如果我在解释器中输入h.func_code.co_code,我得到'code' object has no attribute 'co_code'。在

更新:再次从评论中更新。据我所知,这些操作码已经被重新映射为随应用程序一起提供的python解释器。在


Tags: 函数应用程序可执行文件return字节定义地址def
1条回答
网友
1楼 · 发布于 2024-09-20 23:00:06

如果您定义了自己的def h(): pass伪函数,并且该函数没有.func_code.co_code值,那么所包含的python解释器很可能是一个自定义编译版本,其中co_code插槽已被清除。在

解决方法很简单,将Contents/Resourceszipfiles(在所有子目录中)复制到其他地方,将它们添加到您的PYTHONPATH中,然后将代码导入到您自己的解释器中。在

相关问题 更多 >

    热门问题