提问人:Flash 提问时间:5/18/2020 更新时间:5/18/2020 访问量:190
OOP中闭包属性背后的逻辑是什么?[已结束]
What is the logic behind closure property in OOPs? [closed]
问:
我对面向对象编程语言中的闭包概念有疑问。因此,根据定义,闭包是内部函数可以访问自由变量(在外部函数中创建的变量)的概念。
我想知道,为什么内部函数有这个属性?面向对象编程语言的这种功能背后的逻辑是什么?
P.S. 我正在学习 Python 中的 OOP...... 如果有人有任何想法,请帮助:) 谢谢
答:
2赞
SimonR
5/18/2020
#1
这允许您编写行为为“函数工厂”的函数。因此,您使用某个参数调用外部函数,该参数返回内部函数(请注意,至关重要的是,它不会调用内部函数)。
例如:
def times_n(n):
def func(x):
return x*n
return func
这将返回一个函数,该函数将接受参数,并将它们乘以您传递给外部函数的“n”:
例如
times_three = times_n(3)
times_three(4)
=> 返回 12
所有这些都是可能的,因为 python 中的函数是第一类对象:您可以传递它们,将它们分配给变量,在这种情况下,从函数返回它们。
0赞
Ori Cohen
5/18/2020
#2
简短的回答是,闭包在面向对象编程中没有立足之地。你在 python 中经常看到它,因为虽然该语言确实支持对象的概念,但它本身并不是一种面向对象的语言。 更真实的说法是,python 支持许多编程范式,而闭包的思想来自语言的功能方面。 如果你有兴趣,你可以在这里阅读更多内容(示例在 JS 中,但想法是一样的): “现代 JavaScript 中的函数式编程范式:部分应用”,作者:Alexander Kondov https://link.medium.com/F492cDEhz6
上一个:松散的后期装订与严格的后期装订
评论