首页 > 解决方案 > 使用 exec() 从字符串运行 lambda 函数

问题描述

我希望能够从 txt 文件中引入 lambda 函数,并让它能够像正常的代码部分一样运行。


chain = "What has to be broken up"

reduction = 'lambda chain: chain[0:8]'

x = exec(reduction)

print(x)      #only prints out 'None'

print(exec(x = reduction))    #causes error

print(exec(reduction)) #prints out 'None'

我希望输出是字符串链的前 8 个字符,“有什么”。我怎样才能使这项工作来运行该功能?

标签: pythonlambdaexec

解决方案


要运行一个函数,你必须()在它之后使用。

要获取字符串中表达式的值,您需要使用eval(),而不是exec()。请参阅eval、exec 和 compile 之间有什么区别?.

由于您的 lambda 函数有一个参数,因此您需要在调用它时给它一个参数。

chain = "What has to be broken up"
reduction = 'lambda c: c[0:8]'
x = eval(reduction)(chain)
print(x)

如果你不想给它一个参数,你应该取出参数。但是您仍然需要提供一个空的参数列表。

chain = "What has to be broken up"
reduction = 'lambda: chain[0:8]'
x = eval(reduction)()
print(x)

推荐阅读