如何让 Python 将其内存中的函数代码写入文件?

当我在程序(一个计算生物学实验)中传递选项时,我通常通过一个 .py 文件传递它们。
所以我有一个这样的 .py 文件:

starting_length=9
starting_cell_size=1000
LengthofExperiments=5000000

然后我执行该文件并获取数据。由于该程序都在我的机器上,并且没有人可以访问它,因此它以一种简单的方式是安全的。
我也可以很容易地编写一个类似的文件:

def writeoptions(directory):
    options=""
    options+="starting_length=%s%s"%(starting_length,os.linesep)
    options+="starting_cell_size=%s%s"%(starting_cell_size,os.linesep)
    options+="LengthofExperiments=%s%s"%(LengthofExperiments,os.linesep)
...
    open("%s%soptions.py"%(directory,os.sep),'w').write(options)

我想将一个函数作为参数之一传递:

starting_length=9
starting_cell_size=1000
LengthofExperiments=5000000

def pippo(a,b):
    return a+b
functionoperator=pippo

当然,在实际的实验中,函数 pippo 会复杂得多。并且每个实验都不同。

但我无法做到的是自动写入函数。简而言之,如果其中一个选项是一个函数,我不知道如何泛化 writeoptions 函数来继续写入选项。我当然可以复制原始文件,但这不够优雅、效率低下(因为它包含许多未使用的额外选项),并且通常无法解决问题。

如何让 Python 像写入变量的值一样,写入函数的代码?


回答:

vinko@mithril$ more a.py

def foo(a):
  print a

vinko@mithril$ more b.py

import a
import inspect

a.foo(89)
print inspect.getsource(a.foo)

vinko@mithril$ python b.py
89
def foo(a):
  print a

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注