【Python】闭包Closure
原来这就是闭包啊。。。
还是上次面试,被问只不知掉js里面的闭包
闭包,没听过啊。。。什么是闭包
回来查了下,原来这货叫闭包啊。。。。。。
——————————————————————————————————
闭包(closure)是函数式编程的重要的语法结构。闭包也是一种组织代码的结构,它同样提高了代码的可重复使用性。
当一个内嵌函数引用其外部作作用域的变量,我们就会得到一个闭包. 总结一下,创建一个闭包必须满足以下几点:
- 必须有一个内嵌函数
- 内嵌函数必须引用外部函数中的变量
- 外部函数的返回值必须是内嵌函数
感觉闭包还是有难度的,几句话是说不明白的,还是查查相关资料.
重点是函数运行后并不会被撤销,就像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/