Day11名称空间,作用域,闭包函数

Day11

1.函数对象: ①可以被引用
​ ②可以作为另一个函数的参数
​ ③可以作为另一个函数的返回值0
​ ④可以被存储到容器类型中

2.函数嵌套:
①嵌套调用:在一个函数中调用了另一个函数
​ ②嵌套定义:在一个函数内定义了另一个函数

​ 特点:定义在函数内的函数只能在函数内使用,外界不能直接访问

3.名称空间:存储名字与内存地址对应关系的空间

​存储名称的空间,名称空间中,名字与内存地址一一对应

内置名称空间:解释器自带的名称与值的对应关系
python解释器启动的时创建,关闭python解释器销毁

全局名称空间:文件级别的名称,除了内置的和函数内的都在全局名称空间
执行py文件时创建,执行完毕时销毁

局部名称空间:只要是函数内的名称就在局部名称空间
调用函数时创建,函数执行完毕就销毁

加载顺序,1.内置,2,全局3.局部
查找顺序,1.局部 2,全局 3,内置

4.作用域:
域指的是区域,范围的意思
全局的名称空间和内置的名称空间,在使用上没什么区别
局部和全局的,内置的,就有区别了,局部定义的只能在局部使用

给三个空间划分范围
全局和内置的可以划分到一个范围内
global全局范围,就是所谓的全局作用域

局部的单独划分为一个范围
local 局部作用域

globals() 查看全局作用域中的内容
dir(globals()["_builtins_"])

locals() 查看作用域中的内容

global明确声明,要使用全局中的age

nonlocal使用闭包函数外部函数变量 nonlocal
明确声明使用上一层中的a,如果上一层没有a,则找找上上层,不能找全局

5.闭包函数:
1.定义在另一个函数内
2.在内部函数中使用外部的名称

函数的作用域在定义时就已经固定好,与调用位置没有关系
在返回这个内容的函数时,不是单纯的返回函数,还把函数中访问到的局部名称一起打包了
相当于将内部函数与访问的数据打包在一起了(数据不包含全局变量)

posted @ 2018-11-28 23:18  robertzhou  阅读(107)  评论(0编辑  收藏  举报