闭包

≡放荡痞女 提交于 2019-12-01 23:59:27

定义:多层函数嵌套(一般为两个),而且通常内部函数需要用到外部函数的变量,那么就把内部函数和外部函数中的那些变量值 叫做闭包。

定义有些抽象,来看例子。如果想实现设计一个一元一次函数,其中斜率k,截距b和变量x 都是需要用户自定义。

 

 

 程序如上,当执行这个程序的时候,编译器首先会跳到 line_1 = line(1,2) 这行,随后程序会找到 def line(k,b)这行,再继续到def creat_y(x)这行,

此时,程序不会执行内层函数中的内容,因为函数只有在被调用的时候才会执行,所以程序执行到def creat_y(x)这行时什么也不会做,直接跳到return creat_y【注意这里没有小括号】。

此时返回了函数的指向,而不会函数的值。也就是说程序从开始运行到现在返回的结果是 内层函数creat_y的指向。

而creat_y指向了计算机内存中的一块空间,这块空间中有实参k b和形参x 以及函数creat_y里面的内容【红框里面的东西】。

所以,当最开始执行line_ = line(1,2)这行时,结果就是line_1指向了红框这个空间,而这个空间中只有x一个形参,k和b都是作为实参从外部函数中被传入到内层函数中去了。

后面三行,在调用line_1时传入的参数(0,1,2)就是传给红框空间中的x。


 

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!