Bootstrap

python的code函数_Python:如何将参数传递给函数的__code__?

以下作品:

def spam():

print "spam"

exec(spam.__code__)

spam

但是,如果垃圾邮件发生争议呢?

def spam(eggs):

print "spam and", eggs

exec(spam.__code__)

TypeError: spam() takes exactly 1 argument (0 given)

给定的是,我无法访问该函数本身,而只能访问一个代码对象,在执行代码对象时如何传递参数?有可能用eval吗?

编辑:由于大多数读者倾向于不相信这一点的用处,请参阅以下内容:

我想将一些小的python函数保存到一个文件中,这样它们可以被称为例如。从另一台电脑。 (这里不用说这个用法限制了可能的功能。)酸洗功能对象本身不能工作,因为这只能保存定义功能的名称和模块。相反,我可以选择函数的__code__。当我再次解开它时,当然这个函数的引用消失了,这就是为什么我不能调用这个函数。我根本没有在运行时。

另一个用途:

我在一个文件中处理几个函数,计算一些数据并将其存储在硬盘驱动器上。计算消耗了很多时间,所以我不想每次都执行这些功能,但只有当功能的实现改变时才会执行。

我有一个版本的运行一个整个模块,而不是一个功能。它可以通过查看实现模块的文件的修改时间来工作。但是如果我有很多不想在单个文件中分离的功能,这不是一个选择。

;