将返回对象赋值给函数定义后的函数名的目的

Posted

技术标签:

【中文标题】将返回对象赋值给函数定义后的函数名的目的【英文标题】:Purpose of assigning the return object to the function name after the function definition 【发布时间】:2018-11-02 06:35:11 【问题描述】:

我发现 swig 为 C++ 函数生成的 Python 包装器有以下几行:

def my_func(arg):
    return _cpp_mod.my_cpp_func(arg)
my_func = _cpp_mod.my_cpp_func

.i文件中的源代码如下:

%module cpp_mod
... ...
%inline %
MyObj& my_cpp_func(arg) 
    return *new MyObj(arg);

%

生成的代码的所有功能似乎都正常。 我想知道的是第三行的目的 生成的python代码。提前致谢。

【问题讨论】:

真正的问题是前两行是干什么用的!该函数在创建后立即被替换 【参考方案1】:

这正是 SWIG 决定包装函数的方式。第一部分

def my_func(arg):
  return _cpp_mod.my_cpp_func(arg)

显示输入参数的数量,如果生成注释,它们将插入此处。

第二部分

my_func = _cpp_mod.my_cpp_func

正在将函数重新定义为生成的库函数

【讨论】:

以上是关于将返回对象赋值给函数定义后的函数名的目的的主要内容,如果未能解决你的问题,请参考以下文章

函数名的使用

学装饰器之前必须要了解的四点

第十一天 函数名的使用以及第一类对象, 闭包, 迭代器

类和对象—4

函数名的运用(第一类对象)以及闭包与迭代器

自定义函数