[英]How to convert `lambda` object to `function` object for pickling 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.