【发布时间】:2021-03-04 16:56:42
【问题描述】:
我正在向我的学生介绍函数式编程的某些方面。我们使用 python 作为我们的主要语言。对我来说,组合函数是函数式编程的主要方面之一。为了说明这一点,我提出了以下示例,不过是经典的。
import dis
def f(x):
return 2*x+1
def g(x):
return x**2
def comp(fun1, fun2):
return lambda x:fun1(fun2(x))
dis.dis(f)
dis.dis(g)
dis.dis(comp(f,g))
我只是想知道,有没有办法使用 dis 模块取回 comp(f,g) 的表达式。我知道有一些参数可以调整递归调用的级别,但是我没有花足够的时间去探索。我还发现了ast 模块,乍一看有点乏味。
所以我认为这是 Stackoverflow 的问题:在任何符号计算的想法之前,有没有办法让 dis 描述 comp(f,g) 成为 lambda x:2*x**2+1 或 ast 显示此表达式的抽象语法树?
感谢您的建议。
【问题讨论】:
标签: python functional-programming abstract-syntax-tree disassembly function-composition