我希望能够从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个字符“ What have”。如何使这项工作运行该功能?
最佳答案
要运行功能,必须在其后使用()
。
要获取字符串中表达式的值,需要使用eval()
,而不是exec()
。请参见What's the difference between eval, exec, and 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)