首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在python中有Linq.Expressions.Expression的平衡点吗?

在python中有Linq.Expressions.Expression的平衡点吗?
EN

Stack Overflow用户
提问于 2011-04-26 14:06:03
回答 1查看 129关注 0票数 1

我希望能够像C#一样从lambda函数中获得表达式,并将其解析为其他内容?

C#中的示例:

代码语言:javascript
复制
void Foo<T>(Expression<Func<T, bool>> expression
{
// ...
}

Foo<Baz>(someObj => someObj.HasBar);

lambda运算符将被转换为可以检查的表达式。

python中的平衡点是什么?

EN

回答 1

Stack Overflow用户

发布于 2011-04-26 14:10:06

Python提供了对编译后的代码形式的完全访问。

代码语言:javascript
复制
>>> f = lambda(x): 2*x
>>> f.func_code.co_code
'd\x00\x00|\x00\x00\x14S'
>>> 

原则上,您可以对其进行反向工程以计算出表达式,尽管这样做并不容易。dis模块可能会让您领先一步:

代码语言:javascript
复制
>>> 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'
>>> 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5786593

复制
相关文章

相似问题

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