Chico&Kiko

python基础之Day11

一、函数是对象

函数是第一类对象的含义是函数可以被当作数据处理

二、函数的嵌套定义

def f1():
  def f2():
    print('from f2')
  f2()
f1()

三、名称空间与作用域

1.名称空间namespace

  存放名字与值绑定关系的地方

2、名称空间分为三大类

  内置名称空间:

    作用:存放Python解释器自带的名字

    生命周期:

      在解释器启动时生效,在解释器关闭时失效

  全局名称空间:

    作用:除了内置的与局部的名字外,其余都是全局名字

    生命周期:

      在文件执行时生效,在文件执行完毕时失效

  局部名称空间:

    作用:用于存放函数调用函数体产生的名字

    生命周期:

      在文件执行过程

      如果调用了某个函数才会临时生效,在函数执行完毕后失效

  三种名称空间的加载顺序是:
    内置-》全局-》局部

  名称空间就是用来存放名字与值的绑定关系的,所以但凡要查找名字
  一定是从三者之一找到,查找顺序:
  从当前所在的位置倒着查找,如果当前所在的位置是局部名称空间,
  则查找顺序是:
    局部-》全局-》内置

3、作用域

  域指的是区间、范围,作用域即作用范围

  全局作用范围,全局作用域(内置名称空间与全局名称空间)

    全局有效,全局存货

  局部作用范围,局部作用域(局部名称空间)

    局部有效,临时存活

注:

作用域关系在函数定义阶段就已经固定死了,但凡调用函数都需要跑到定义阶段去找作用域关系

在局部如果想要修改全局的可变类型,不需要借助任何声明,可以直接修改

在局部如果要修改全局的不可变类型,需要借助global声明,声明为全局的变量就可以直接修改了。

posted on 2018-06-15 17:36  Chico&Kiko  阅读(79)  评论(0编辑  收藏  举报

导航