我希望能够像C#一样从lambda函数中获得表达式,并将其解析为其他内容?
C#中的示例:
void Foo<T>(Expression<Func<T, bool>> expression
{
// ...
}
Foo<Baz>(someObj => someObj.HasBar);lambda运算符将被转换为可以检查的表达式。
python中的平衡点是什么?
发布于 2011-04-26 14:10:06
Python提供了对编译后的代码形式的完全访问。
>>> f = lambda(x): 2*x
>>> f.func_code.co_code
'd\x00\x00|\x00\x00\x14S'
>>> 原则上,您可以对其进行反向工程以计算出表达式,尽管这样做并不容易。dis模块可能会让您领先一步:
>>> import dis
>>> dis.dis(f)
1 0 LOAD_CONST 0 (2)
3 LOAD_FAST 0 (x)
6 BINARY_MULTIPLY
7 RETURN_VALUE
>>> dis.opname[ord(f.func_code.co_code[-2])]
'BINARY_MULTIPLY'
>>> dis.opname[ord(f.func_code.co_code[-1])]
'RETURN_VALUE'
>>> https://stackoverflow.com/questions/5786593
复制相似问题