Python-内部函数、闭包和工厂函数-如何计算?

Python-内部函数、闭包和工厂函数-如何计算?,python,Python,我希望一位Python专家能为我解决目前在内部函数、闭包和工厂函数方面遇到的困惑提供一些帮助。在查找一般Hough变换的实现示例时,我发现: 我想把它翻译成C++,似乎第一步是在GyralHOHYLUBLULUTE()中分解内部函数:< /P> 我似乎被这个函数的工作原理所困扰。“f”似乎没有在任何地方被调用,我也不确定函数如何知道“query_image”是什么?我曾尝试过各种各样的谷歌搜索,以查找关于内部函数、闭包和工厂函数的提示,例如,以及一些类似的页面,但我能找到的所有示例都更加简化,

我希望一位Python专家能为我解决目前在内部函数、闭包和工厂函数方面遇到的困惑提供一些帮助。在查找一般Hough变换的实现示例时,我发现:

我想把它翻译成C++,似乎第一步是在GyralHOHYLUBLULUTE()中分解内部函数:< /P> 我似乎被这个函数的工作原理所困扰。“f”似乎没有在任何地方被调用,我也不确定函数如何知道“query_image”是什么?我曾尝试过各种各样的谷歌搜索,以查找关于内部函数、闭包和工厂函数的提示,例如,以及一些类似的页面,但我能找到的所有示例都更加简化,因此没有太多帮助。有人能提供一些指导吗?

代码只是作为一个整体返回函数
f
。无需“知道参数是什么”-f将在调用它时知道它。经典的例子是:

>>> def f(x):
...     def g(y):
...         return x + y
...     return g
... 
>>> f
<function f at 0x7f8500603ae8>
>>> f(1)
<function f.<locals>.g at 0x7f8500603a60>
>>> s = f(1)
>>> s(2)
3
<>在C++中,如果不指定你关闭的值(这就是<代码> [x] < /代码>),你会得到它的“优势”。但是在内部,它做了几乎相同的事情(用
x
-成员构造一个匿名类)。

代码只是作为一个整体返回函数
f
。无需“知道参数是什么”-f将在调用它时知道它。经典的例子是:

>>> def f(x):
...     def g(y):
...         return x + y
...     return g
... 
>>> f
<function f at 0x7f8500603ae8>
>>> f(1)
<function f.<locals>.g at 0x7f8500603a60>
>>> s = f(1)
>>> s(2)
3

<>在C++中,如果不指定你关闭的值(这就是<代码> [x] < /代码>),你会得到它的“优势”。但是在内部,它做了几乎相同的事情(用
x
-成员构造一个匿名类)。

C++11之前的C++没有函数作为类型

可以使用以下类来模拟语义(伪代码):

然后,您可以按如下方式使用它:

gg = new GeneralHoughClosure(reference_image)
gg.Run(queryImage1)
gg(queryImage2)

C++11之前的C++没有函数作为类型

可以使用以下类来模拟语义(伪代码):

然后,您可以按如下方式使用它:

gg = new GeneralHoughClosure(reference_image)
gg.Run(queryImage1)
gg(queryImage2)

这段代码返回一个函数。你确定这就是你想要的吗?我怀疑这是你想在C++中做的事情。@ RoWin,我知道函数返回一个函数,这是我想分解的部分,所以我可以翻译成C++来删除行<代码> DEF f(QuyRyIMAGE):< /Cord>,删除<代码>返回F>代码>,并赋予函数第二个参数名为“代码> QuyRyIsIG/<代码>。这应该很容易翻译。这段代码返回一个函数。你确定这就是你想要的吗?我怀疑这是你想在C++中做的事情。@ RoWin,我知道函数返回一个函数,这是我想分解的部分,所以我可以翻译成C++来删除行<代码> DEF f(QuyRyIMAGE):< /Cord>,删除<代码>返回F>代码>,并赋予函数第二个参数名为“代码> QuyRyIsIG/<代码>。如果我的C++是不正确的,请编辑它,我实际上不经常使用C++。如果我的C++是不正确的,请编辑它,我实际上不经常使用C++。谢谢这个建议,我有没有办法可以在不加类的情况下分解嵌套函数?C++ 11确实有类型的功能。您可以使用返回一个初始化的(例如),就像在python中一样。您是对的,我更新了答案。我们中的一些人没有足够的工作来处理C++ 11:-谢谢这个建议,但是我试图在没有使用类的情况下转换到C++,返回一个STD::函数,或者使用lambdas,关于如何实现这个问题有什么建议?谢谢你的建议,有没有一种方法可以在不添加类的情况下分解出嵌套函数?C++11确实有函数作为类型。您可以使用返回一个初始化的(例如),就像在python中一样。您是对的,我更新了答案。我们中的一些人没有足够的工作来处理C++ 11:-谢谢这个建议,但是我试图在没有使用类的情况下转换到C++,返回一个STD::函数,或者使用lambDas,关于如何实现这一点的任何建议?
gg = new GeneralHoughClosure(reference_image)
gg.Run(queryImage1)
gg(queryImage2)