![](/img/trans.png)
[英]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.