day12

1、名称空间

    namespace
就是存储名字的内存区域
名称空间的分类
内置名称空间,存的是python解释器自带的名称,例如print,len
特点:其特点是在程序运行的过程中一直有效
生命周期:随着解释器的启动而生效,随着解释器运行结束而失效

全局名称空间
只要是顶着最左边写的,没有任何缩进的,就在全局空间中
特点:其特点是在程序运行的过程中一直有效
生命周期:随着py文件的执行而生效,随着py文件的执行结束而失效
需要注意的是,在if中,如果if是顶着最左边的没有缩进的那么if里面
名字也属于全局,例如:while,whit,for

局部名称空间
存的是函数内定义的名字
特点:仅在函数掉用时临时有效
生命周期:随着函数的调用而生效,随着函数的调用结束而失效

名称空间的加载顺序
内置 -> 全局 -> 局部

名字的查找顺序 局部 -> 全局 -> 内置

2、
作用域
    域指的是区域,范围,作用域指的就是作用区域,作用范围,有效范围
简单的说就是名字的有效范围

存储名称的有三个地方
内置名称空间
全局名称空间

局部名称空间

全部作用域
由于,内置名称空间的名字与全局名称空间的名字,可以在任何位置来访问,
所以它们俩可以划到同一个范围,称之为全局范围即全局作用域
局部作用域
局部名称空间的名字只能在当前的函数中访问,所以他单独划到一个范围中,
这个范围称之为局部作用范围即局部作用域

global(全局) 与 nonlocal(不使用本地) 关键字
global
当需要在函数内部修改修改全局中名字的值时需要使用global
注意,必须在使用这个名字之前使用global
nonlocal(不使用本地)
当需要在内层函数中修改外层函数中的名字时就需要使用nonlocal
会一层一层往外找,直到找到为止,但是只能找到函数中的不能找到全局的名字

3、
函数对象
    没有新技术点
目的是为了让你知道 函数都可以怎么来使用

函数是第一类对象:
1.能够被调用
2.可以当做容器类型的元素
3.可以当做函数的参数
4.可以当做函数的返回值
函数名除了可以调用之外与一个变量名,没有本质区别,变量能怎么用函数名就能怎么用

4、
闭包函数
    闭包:一个函数将另一个函数关闭在内部,反过来说一个函数被另一个函数包裹
闭包函数也是一种函数
其特点是:
1.该函数是定义在另一个函数的中的
2.该函数包含了对外层函数中名字的引用,无论在任何位置使用这个函数,其都包含了外部名字引用
满足以上两条 就称之为闭包函数

需要注意的是名字所在的作用域 在函数定义阶段就已经固定了,与调用位置无关
现阶段可以将闭包理解为 另一种为函数体传值的方式
之前只能通过参数传值的
posted @ 2019-01-14 15:03  AfterJourney  阅读(98)  评论(0编辑  收藏  举报