繁体   English   中英

how to convert a string object to a lambda function object in python

[英]how to convert a string object to a lambda function object in python

我有一个字符串列表,其中包含 lambda 函数,如下所示:

funcs = ["lambda x: x * x", "lambda x: x + x"]

我想使用这些功能,因为我们使用 lambda。 例如,如果我有这个:

funcs = [lambda x: x * x, lambda x: x + x]
a = funcs[0](3)
print(a)

> 9

但首先我需要将此字符串转换为lambda以将其用作lambda 我将如何做到这一点?

您可以使用eval内置 function,请参阅有关它的文档部分

例如:

funcs = ["lambda x: x * x", "lambda x: x + x"]
funcs = [eval(func_str) for func_str in funcs]

但是请记住,使用eval存在安全风险,因此,为了防止代码注入,您需要确保字符串不是来自用户输入,或者脚本的使用 scope 是私有的

警告: eval()方法非常危险,所以请不要这样做。 请参阅此处:为什么使用“评估”是一种不好的做法?

您可以自行承担风险,使用eval()方法将字符串评估为代码:

funcs = ["lambda x: x * x", "lambda x: x + x"]
funcs = list(map(eval, funcs))
a = funcs[0](3)
print(a)

Output:

9

list(map(eval, funcs)) funcs)) 对数组中的每个字符串使用内置的map()方法 map eval()方法。


还有这篇关于该主题的简洁文章: Eval 真的很危险

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM