有没有在Python 3.x中使用标准库在运行时编译函数并通过函数对象使用它的方法?如何在运行时编译函数?
我试过如下:
class A:
def meth1(self, par1):
print("in A.meth1: par1 =", par1)
a = A()
s = '''def meth1(self, par1):
print("in recompiled A.meth1: par1 = ", par1)'''
a.meth1.__func__.__code__ = compile(s, __file__, "exec")
a.meth1("via meth1")
但是,这给出了一个错误:
TypeError:
<module>(
) takes 0 positional arguments but 2 were given
在为compile()
它writen与它编译的代码可以与eval()
或exec()
运行的文档。有没有办法编译一个函数,并通过没有eval()和exec()的函数对象来调用它?
我想知道问题是什么,需要自修改代码作为解决方案? –
@Roland我试图使用一些仅在运行时才知道的信息(速度增强)。 –
也许你应该发表一个问题如何处理这个问题,但有更多的细节。可能有更好的方法。我假设你已经对代码进行了剖析,以显示程序大部分时间花在哪里? –