【Python】闭包Closure

原来这就是闭包啊。。。

还是上次面试,被问只不知掉js里面的闭包

闭包,没听过啊。。。什么是闭包

回来查了下,原来这货叫闭包啊。。。。。。

——————————————————————————————————

闭包(closure)是函数式编程的重要的语法结构。闭包也是一种组织代码的结构,它同样提高了代码的可重复使用性。

当一个内嵌函数引用其外部作作用域的变量,我们就会得到一个闭包. 总结一下,创建一个闭包必须满足以下几点:

  1. 必须有一个内嵌函数
  2. 内嵌函数必须引用外部函数中的变量
  3. 外部函数的返回值必须是内嵌函数

感觉闭包还是有难度的,几句话是说不明白的,还是查查相关资料.

重点是函数运行后并不会被撤销,就像16题的instance字典一样,当函数运行完后,instance并不被销毁,而是继续留在内存空间里.这个功能类似类里的类变量,只不过迁移到了函数上.

闭包就像个空心球一样,你知道外面和里面,但你不知道中间是什么样.

这个题挺有意思的,排序,但是出现在指定数组中的数字放在前面

 1 def sort_priority(num, group):
 2     flag = False
 3     def helper(x):
 4         nonlocal flag
 5         if x in group:
 6             flag = True
 7             return (0, x)
 8         return (1,x)
 9     num.sort(key=helper)
10     return flag
11 
12 if __name__ == '__main__':
13     num = [4,2,7,4,9,1,10]
14     g = [4,7,10]
15     sort_priority(num,g)
16     print(num)

 参考资料:http://python.jobbole.com/85231/

posted @ 2017-02-23 11:28  wilderness  阅读(187)  评论(0编辑  收藏  举报