您如何让Python写下它在内存中的函数的代码?

发布于 2021-01-29 14:09:38

当我在程序中传递选项时(计算生物学实验),我通常通过.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写下函数的代码?

关注者
0
被浏览
356
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。
    vinko @ mithril $更多a.py
    
    def foo(a):
      打印一个
    
    vinko @ mithril $更多b.py
    
    导入一个
    进口检验
    
    a.foo(89)
    打印inspect.getsource(a.foo)
    
    vinko @ mithril $ python b.py
    89
    def foo(a):
      打印一个
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看