闭包

以y=kx+b数学函数为例,计算y的值。

使用闭包来实现:

 1 def line_1(k,b):
 2     def create_y(x):
 3         print(k*x+b)
 4     return create_y
 5 
 6 line_1_1 = line_1(2,3)
 7 line_1_1(1)
 8 line_1_1(2)
 9 
10 print("-"*50)
11 
12 line_1_2 = line_1(5,6)
13 line_1_2(1)
14 line_1_2(2)

 

输出结果:

5
7
--------------------------------------------------
11
16

 

代码执行过程:

 

 

 当一个嵌套函数在其外部区域引用了一个值时,该嵌套函数就是一个闭包。

总结:

  闭包是一种函数,它会保留定义函数是存在的自由变量的绑定,这样调用函数时,虽然定义作用域不可用了,但是仍能使用这些绑定

注意:

      只有嵌套在其他函数中的函数才可能需要处理不在全局作用域中的外部变量

 

 

posted @ 2020-05-17 21:38  小屁孩的觉悟  阅读(168)  评论(0)    收藏  举报