Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中从字符串获取函数_Python - Fatal编程技术网

在python中从字符串获取函数

在python中从字符串获取函数,python,Python,是否可以定义如下所示的函数 text = "def x(a):\treturn a+1" f = ??(text) f(1) >> 2 您可以使用exec 您可以使用exec 下面是另一个解决方案: text = "def x(a):\treturn a+1" f = {} exec text in f f['x'](1) >> 2 下面是另一个解决方案: text = "def x(a):\treturn a+1" f = {} exec text in f f['

是否可以定义如下所示的函数

text = "def x(a):\treturn a+1"
f = ??(text)
f(1)
>> 2
您可以使用exec

您可以使用exec


下面是另一个解决方案:

text = "def x(a):\treturn a+1"
f = {}
exec text in f
f['x'](1)
>> 2

下面是另一个解决方案:

text = "def x(a):\treturn a+1"
f = {}
exec text in f
f['x'](1)
>> 2

@巴加夫罗,我想这就是问题所在……只要打印“你好”或其他任何东西,你为什么要这样做?如果推理是因为我想在使用函数的同一行上定义函数,而def不能与其他语句在同一行上,然后您可以改为使用lambdas:print lambda:a+11@Kevin我正在创建一个API,用户可以在其中定义将由其他函数执行的函数,这些函数实际上是lambdas。@BhargavRao我想这就是问题所在……只需执行print'hello'或任何其他命令,为什么要这样做?如果推理是因为我想在使用函数的同一行上定义函数,而def不能与其他语句在同一行上,然后您可以改为使用lambdas:print lambda:a+11@Kevin我正在创建一个API,用户可以在其中定义将由其他实际为lambda的函数执行的函数。@bhargavrao:任何运行任意代码的方法都是危险的。@forcebru:是的,这就是我将其转换为lambda的原因@巴加夫罗:任何运行任意代码的方法都是危险的。@forcebru:是的,这就是为什么我把它转换成lambda!现在最难的部分是,让f5给出6,当你不知道文本的内容,也不知道函数当前被称为x,所以你不能只做f=x现在最难的部分是,让f5给出6,当你不知道文本的内容,也不知道函数当前被称为x,所以你不能只做f=X,请添加一些解释。传授底层逻辑比仅仅给出代码更重要,因为这有助于OP和其他读者自己解决这个问题和类似问题。请添加一些解释。传授底层逻辑比仅仅给出代码更重要,因为它可以帮助OP和其他读者自己解决这个问题和类似的问题。
text = "def x(a):\treturn a+1"
f = {}
exec text in f
f['x'](1)
>> 2