可以将表达式发送给python中的函数或以其他方式捕获表达式的文本吗?



基本上-我正在做一个稍微不同的测试线具-我的要求很简单,但我只是不知道它是否可能在python?

我想做的就是做一个函数检查,如果我做了

check( "check the total matches", 123, a + call_something() * call_something_else() )

得到如下输出:

check the total matches failed...
expected:  123
evaluated:  a + call_something() * call_something_else()
got:  122

即我的问题是关于构建&;评估&;字符串。在其他语言中,我查看了堆栈框架,找出了该函数的源代码,搜索了匹配的断言行并对其进行了解析——但它感觉可能在python中有一种更简单的方法——因为异常似乎包含了这些信息?

所以这是丑陋的,但它是为我工作:

def show_expression( expression ):
caller = [x.line for x in traceback.extract_stack(limit = 2)][0]
return re.findall( r"show_expression(s*(.*?)s*)s*$", caller)[0]

show_expression( 1 + 2 )    

相关内容

  • 没有找到相关文章

最新更新