zoukankan      html  css  js  c++  java
  • 【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/

  • 相关阅读:
    clr via c# 定制特性
    clr via c# delegate
    clr via c# Array2
    clr from c# 字符 ,字符串 和 文本处理
    clr via c# 接口
    clr via c# 泛型
    clr via c# 事件
    clr via c# 参数和属性
    程序设计入门——C语言 第6周编程练习 2 完数(5分)
    程序设计入门——C语言 第6周编程练习 1 分解质因数(5分)
  • 原文地址:https://www.cnblogs.com/fcyworld/p/6432676.html
Copyright © 2011-2022 走看看