擅长:python、mysql、java
<p>虽然我不知道您为什么要这样做,但是您所描述的可以通过<a href="http://docs.python.org/library/inspect.html" rel="nofollow" title="inspect">^{<cd1>}</a>模块实现。这个例子和你原来的例子很接近,我可以想出。在</p>
<pre><code>from inspect import getcallargs
def f1(a,b):
"""a==b"""
pass
def f2(f, *f_args, **f_kwargs):
f_callargs = getcallargs(f, *f_args, **f_kwargs)
return eval(f.__doc__, None, f_callargs)
f2(f1, 2, 2)
</code></pre>
<p>这应该输出<code>True</code>。在</p>
<p>请记住,这假定传递给<code>f2</code>的任何此类函数的参数和docstring有很多事情,其中最重要的一点是所检查的函数都不是恶意的或格式错误的。为什么不想正常调用函数,为什么不想更改函数?在</p>
<p><strong>编辑</strong>:正如Pajton所指出的,<code>getcallargs</code>在这里更合适,并删除对<code>dict</code>和{<cd6>}的调用。以上代码已更新以反映这一点。在</p>