python - 使用 exec() 从字符串运行 lambda 函数

标签 python lambda exec

我希望能够从一个 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/

相关文章:

python - 在 sklearn DecisionTreeClassifier 中修剪不必要的叶子

c - C 中的 pipe、fork 和 shell 命令

python - 如何将默认值传递给 Altair 编码

python - 正则表达式中的返回组与字符串匹配

java - 使用 Java 8 流,如何用索引替换映射中的键?

Java流: sorting by ZoneDateTime field

performance - 使用 Java 8 查找连续子列表的负和

C:传递数组代替变量参数列表

node.js - 在nodejs(windows)中显示正在运行的子进程的输出

python - 有没有一种简单的方法可以将 vulture 与 django 一起使用?