当前位置: 代码迷 >> python >> Python中的Python lambda
  详细解决方案

Python中的Python lambda

热度:79   发布时间:2023-06-13 16:53:47.0

我有一个Python程序,其中有一个应该能够接受Python lambda的函数,然后传递给正在运行的C ++程序。

我正在考虑使用pickle.dumps将lambda序列化为字符串。 然后我只是将字符串传递给C ++程序,之后我使用boost.python进行反序列化并在C ++中获取lambda。 但是,我才意识到功能无法被腌制。

我相信应该有我不了解的现有解决方案。 提前感谢任何建议!

看一下 。 链接转到关于从C调用Python函数的部分。听起来你是C API的新手,所以从顶部开始。

Python不区分各种类型的可调用对象。 就C API而言,函数,lambda,具有__call__方法的对象是可互换的。

我不会在这里复制/粘贴所有内容,因为它在链接中编写得非常好,但基本上你用C(或C ++,这两种API都适用)制作Python模块。 第一个例子向您展示了如何。 然后你可以从Python调用一个C函数,并传递它,无论你需要传递它。 所有Python对象都通过PyObject*指针暴露给C,并且C API提供了许多函数来操作对象,转换为C数据类型或从C数据类型转换,并执行诸如调用可调用对象之类的操作。

boost.python和SWIG等包装器在内部使用此API。