zoukankan      html  css  js  c++  java
  • 闭包函数

    函数嵌套
      嵌套指的是,一个物体包含另一个物体
        函数嵌套指的就是一个函数包含另一个函数
        按照函数的两个阶段 分为
        嵌套调用
          指的是,在函数的执行过程中调用了另一个函数
          其好处是,可以简化外层大函数的代码,是的结构更清晰,
          可以将一个大的复杂的功能拆分为多个简单的小功能
        嵌套定义
          指的是,在函数的函数体中定义了另一个函数
          需要注意的是:内部定义的函数,只能在内部使用,外部无法直接访问
          唯一的使用场景就是闭包函数,除此之外不要这么写
        名称空间
          namespace
          就是存储名字的内存区域
        名称空间的分类
          内置名称空间,存的是解释器自带的名称,列入print,len
          特点:其特点是在程序运行过程中一直有效
        生命周期:随着解释器的启动而生效,随着解释器的运行结束而失效
        全局名称空间
          只要是顶着最左边写的,没有任何缩进的,就在全局名称空间中,其特点是在程序运行过程中一直有效
          特点:其特点是在程序运行过程中一直有效
          生命周期:随着py文件的执行而生效,随着py文件的执行结束而失效
          需要注意的是:在if中如果if是顶着最左边的没有缩进的那么if里面的名字也属于全局
          同样的,while for with都是如此
        局部名称空间
          存的是函数定义的名字
          特点:仅在函数调用时临时有效
        生命周期:随着函数的调用而生效,随着函数的调用结束而失效
          名称空间的加载顺序
          内置--》全局--》局部
          名字的查找顺序
          局部--》全局--》内置
        作用域
          域指的是区域,范围,作用域指的就是作用区域,作用范围,有效范围
          简单的说就是名字的有效范围
          存储名词的有三个地方
          内置名称空间
        全局名称空间
          由于你在名称空间的名字与全局名称空间的名字,可以在任何位置来访问
          所以它们两个可以划到同一个范围,称之为全局范围即全局作用域
        局部名称空间
          局部名称空间的名字只能在当前的函数中访问,所以它单独划到一个范围中
          这个范围称之为局部作用范围即局部作用域
        global(全局)与nonlocal(不使用本地) 关键字
          global
          当需要在函数内部修改全局中名字的值时需要使用global
          注意,必须在使用这个名字之前声明(写)global
        nonlocal(不使用本地)
          当需要在内层函数中修改外层函数中的孟子就需要使用n
          会一层一层往外找,直到找到了为止,但是只能找函数中的不能找到全局的名字
    函数对象
        没有新技术点
          目的是为了让你知道 函数都可以怎么来使用
          面向对象中一句经典语录:万物皆对象,也就是说函数也是对象
        函数是第一类对象,
          1.能够被调用
          2.可以当做容器类型的元素
          3.可以当做函数的参数
          4.可以当做函数的返回值
        函数名除了可以调用之外与一个变量名,没有本质区别,变量名能怎么用函数名就能怎么用
        函数对象的一个应用场景
    闭包函数
        闭包:一个函数将另一个函数关闭在内部
        一个函数被另一个函数包裹
        闭包函数也是一种函数
        其特点:
          1.该函数是定义在另一个函数中的
          2.该函数包含了对外层函数中名字的引用,无论在任何位置使用这个函数,其都包含了外部名字引用
        满足以上两条 就称之为闭包函数
        需要注意的是:名字所在的作用域 在函数定义阶段就已经固定了,与调用位置无关
        现阶段 可以将闭包函数理解为 另一种为函数 体传值的方式
        之前只能通过参数给函数传值
        现在可以通过闭包函数的方式
        由于名称空间与作用域的特点,内层定义函数,只能在内存函数
        而函数对象可以将一个函数作为返回值,使得内部函数也可以被外界使用

  • 相关阅读:
    项目经理如何管理团队
    正则表达式判断中文字符
    售前工作经验总结
    项目管理知识体系九大知识领域
    项目经理如何调动员工的积极性
    项目经理与客户沟通的宜与忌
    关于CodeSmith生成CSLA代码的联想
    接触CSLA框架的感觉
    C#多线程浅接触二、
    WF工作流开发回顾:介绍
  • 原文地址:https://www.cnblogs.com/ShenJunHui6/p/10266777.html
Copyright © 2011-2022 走看看