将参数传递给 python eval()

Geo*_*mov 3 python code-generation eval argument-passing

我正在做遗传编程框架,我需要能够执行一些代表完整Python程序的字符串。我正在使用Python 2.7。我有一个配置类,其中定义了原始集。可以说

class Foo():
    def a(self,x):
        return x

    def b(self,y):
        return y
Run Code Online (Sandbox Code Playgroud)

我正在使用 python 检查模块提取函数,并且我想创建一些包含导入和所有内容的可执行源代码。我最终得到了一个看起来像这样的字符串

import sys

def a(x,y):
    return x

def b(y):
    return y

def main(x,y)
    lambda x,y: a(b(y),a(x,y))

main(*sys.argv)
Run Code Online (Sandbox Code Playgroud)

我的问题是我不知道如何将命令行参数传递给我正在运行的字符串eval()如何将命令行参数传递给我想要运行的源文件eval()

编辑:有数百万人,因此写入文件并不是一个好的选择。

编辑:我犯了一个错误。eval() 方法仅用于表达式而不是语句,因此使用 exec() 是正确的方法

Ale*_*lex 5

eval("function_name")(arg1, arg2)
Run Code Online (Sandbox Code Playgroud)

或者如果您有参数列表:

arguments= [arg1,arg2,arg3,something]
eval("function_name")(*arguments)
Run Code Online (Sandbox Code Playgroud)