如何让 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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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