在函数的代码对象上使用 Python exec 时如何获取返回值?
问题描述
出于测试目的,我想直接执行在另一个函数内部定义的函数.
For testing purposes I want to directly execute a function defined inside of another function.
我可以通过父函数的代码(func_code)得到子函数的代码对象,但是当我执行它时,我没有得到返回值.
I can get to the code object of the child function, through the code (func_code) of the parent function, but when I exec it, i get no return value.
有没有办法从执行的代码中获取返回值?
Is there a way to get the return value from the exec'ed code?
解决方案
是的,你需要在 exec
语句中进行赋值:
Yes, you need to have the assignment within the exec
statement:
>>> def foo():
... return 5
...
>>> exec("a = foo()")
>>> a
5
这可能与您的情况无关,因为它被用于受控测试,但使用带有用户定义输入的 exec
时要小心.
This probably isn't relevant for your case since its being used in controlled testing, but be careful with using exec
with user defined input.
相关文章