zoukankan      html  css  js  c++  java
  • 十,函数对象,嵌套,名称空间与作用域,闭包函数

    一,函数是第一类对象: 指的是函数名指向的值(函数)可以被当作数据去使用

      1. 可以被引用

      2.可以当作参数传给另外一个函数

      3.可以当作一个函数的返回值

      4.可以当作容器类型的元素

    二,函数嵌套

      分为两大类:

      1.函数内部定义

        内部定义只能在内部调用或者把函数当做返回值返回以在外部调用

      2.函数外部定义

    三,名称空间与作用域

      

    1 什么是名称空间namespace
    名称空间就是用来存放名字与值内存地址绑定关系的地方(内存空间)

    age=18
    但凡查找值一定要通过名字,访问名字必需去查找名称空间


    2 名称空间分为三大类
      内置名称空间:存放的是python解释器自带的名字
        例如:
        len
        max
        print

      全局名称空间:存放的是文件级别的名字
        例如:以下名字中xyzfoo都会存放于全局名称空间中
        x=1
        y=2
        if x == 1:
          z=3

        while True:
          b=4
          break

        def foo():
          m=3

      局部名称空间:在函数内定义的名字
        例如:
        foo内的m这个名字一定是存放于一个局部名称空间中


      生命周期:
        内置名称空间:在解释器启动时则生效,解释器关闭则失效
        全局名称空间:在解释器解释执行python文件时则生效,文件执行完毕后则失效
        局部名称空间:只在调用函数时临时产生该函数的局部名称空间,改函数调用完毕则失效

      加载顺序:
        内置->全局->局部

      查找名字的顺序:
        基于当前所在位置往上查找
        假设当前站在局部,查找顺序:局部->全局->内置
        假设当前站在全局,查找顺序:全局->内置

       (******)名字的查找顺序,在函数定义阶段就已经固定死了(即在检测语法时就已经确定了名字的查找顺序),与函数的调用位置无关,也就是说无论在任何地方调用函数,都必须回到当初定义函数的位置去确定名字的查找关系

       作用域:
       域指的是范围,作用域指的就是作用的范围,分为两种
       全局作用域:包含的是内置名称空间与全局名称空间中的名字
       特点:全局有效,全局存活

       局部作用域:包含的是局部名称空间中的名字
       特点:局部有效,临时存活

      global:在局部声明一个名字是来自于全局作用域的,可以用来在局部修改全局的不可变类型

      nonlocal:声明一个名字是来自于当前层外一层作用域的,可以用来在局部修改外层函数的不可变类型

    四,闭包函数

      

    1 什么是闭包函数
      闭:指的是闭包函数是定义在一个函数内部的函数
      包:该内部函数包含对外层函数作用域名字的引用

    需要结合函数对象的概念将闭包函数返回到全局作用域去使用,从而打破函数的层级限制
      def outter():
        x=111
        def inner():
          print(x)
        return inner

      f=outter() #f=outter内的inner

      x=22222
      f()
      def func():
        x=3333
        f()

      func()
    2 为何要用闭包函数
    闭包函数提供了一种为函数体传值的解决方案

    3 如何用闭包函数

      具体操作:装饰器

  • 相关阅读:
    Linux下CVS的配置
    MSVC中的"pseudo register"调试技术
    flash cs4专业版下载(有注册码)
    Away3d学习笔记 away3d类库下载
    Away3D实例教程 贴图(EnviroBitmapMaterial)
    Away3D实例教程 贴图(Dot3BitmapMaterial)
    Away3D学习笔记1 戏说Flash 三维引擎
    Away3d基础6 – 位图材质
    away3D基础6颜色材质
    Away3d实例教程 贴图(texture mapping)
  • 原文地址:https://www.cnblogs.com/TRKOTW/p/9544616.html
Copyright © 2011-2022 走看看