我希望能够从一个 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 has”。我怎样才能使这项工作运行该功能?
最佳答案
要运行一个函数,你必须在它之后使用()
。
要获取字符串中表达式的值,您需要使用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)
关于python - 使用 exec() 从字符串运行 lambda 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56605185/