当我在程序(一个计算生物学实验)中传递选项时,我通常通过一个 .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