2019-01-05 闭包

2019-01-05  本文已影响0人  孟圆的笔记

内部函数和外部函数中被内部函数调用的变量组成了闭包。

  1 def test(number):
  2     print("--1--")
  3 
  4     #解释器遇到定义函数的时候,直接跳过不执行。
  5     def test_in(number2):
  6         print("--2--")
  7         print(number+number2)
  8 
  9 
 10     print("--3--")
 11     return test_in
 12 
 13 
 14 
 15 
 16 
 17 #返回内部函数引用
 18 t = test(100)
 19 
 20 print("-----------分割线----------")
 21 
 22 #调用内部函数
 23 t(200)
--1--
--3--
-----------分割线----------
--2--
300

 
 

例子:函数line与变量a构成了闭包。

  2 def line_conf(a):
  3 
  4     def line(x):
  5         return a*x
  6 
  7     return line
  8 
  9 
 10 line1 = line_conf(10)
 11 
 12 print(line1('*'))
 13 print(line1('-'))

 

1.闭包似优化了变量,原来需要类对象完成的工作,闭包也可以完成。
2.由于闭包引用了外部函数的局部变量,则外部函数的局部变量没有及时释放,消耗内存。

 
 

上一篇 下一篇

猜你喜欢

热点阅读