OOPs中闭包属性背后的逻辑是什么?

2024-05-16 20:26:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我对面向对象编程语言中的闭包概念表示怀疑。因此,根据定义,闭包是一个内部函数的概念,可以访问自由变量(在外部函数中创建的变量)

我想知道,为什么一个内部函数有这个属性?面向对象编程语言的这种功能背后的逻辑是什么

另外,我正在学习Python中的OOPs。。。 如果有人有任何想法,请帮助:) 多谢各位


Tags: 函数功能语言概念属性定义逻辑oops
2条回答

这允许您编写行为类似于“函数工厂”的函数。因此,您使用一些参数调用外部函数,它返回内部函数(请注意,至关重要的是,它不调用内部函数)

例如

def times_n(n):
    def func(x):
        return x*n
    return func 

这将返回一个函数,该函数将接受参数,并将它们乘以传递给外部函数的“n”:

例如

times_three = times_n(3)

times_three(4)

=>;返回12

所有这些都是可能的,因为python中的函数都是一流的对象:您可以传递它们,将它们分配给变量,在本例中,从函数返回它们

简单的回答是闭包在面向对象编程中没有位置。您在python中经常看到它,因为尽管该语言确实支持对象的概念,但它本身并不是一种面向对象的语言。 更确切地说,python支持许多编程范例,闭包的概念来自语言的功能方面。 如果您感兴趣,可以在这里阅读更多内容(示例使用JS,但想法相同): Alexander Kondov https://link.medium.com/F492cDEhz6“现代JavaScript中的函数编程范例:部分应用”

相关问题 更多 >