首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在字符串中获取dis.dis()的结果

在字符串中获取dis.dis()的结果
EN

Stack Overflow用户
提问于 2015-07-10 17:42:01
回答 2查看 891关注 0票数 4

我正在尝试将两件事的字节码与difflib进行比较,但是dis.dis()总是将其打印到控制台。有什么方法可以得到字符串的输出吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-10 18:03:57

使用StringIO将std重新定义为类似字符串的对象(python2.7解决方案)

代码语言:javascript
复制
import sys
import StringIO
import dis

def a():
    print "Hello World"

stdout = sys.stdout # Hold onto the stdout handle
f = StringIO.StringIO()
sys.stdout = f # Assign new stdout

dis.dis(a) # Run dis.dis()

sys.stdout = stdout # Reattach stdout

print f.getvalue() # print contents
票数 4
EN

Stack Overflow用户

发布于 2015-07-10 17:52:40

如果使用Python3.4或更高版本,则可以使用Bytecode.dis()方法获得该字符串

代码语言:javascript
复制
>>> s = dis.Bytecode(lambda x: x + 1).dis()
>>> print(s)
  1           0 LOAD_FAST                0 (x)
              3 LOAD_CONST               1 (1)
              6 BINARY_ADD
              7 RETURN_VALUE

您可能还想看看dis.get_instructions(),它返回一个命名元组的迭代器,每个迭代器对应一个字节码指令。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31347044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档