簡體   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