2019-01-04高阶函数
2019-01-04 本文已影响0人
时光偷走了青春
高阶函数
一、名称空间和作用域
可以简单理解为存放变量值之间邦定关系的地方。
1.名称空间
在 Python 中有各种各样的名称空间:
1,全局名称空间:每个程序的主要部分定义了全局的变量名和变量值的对应关系,这样就叫做全局名称空间
2,局部名称空间:在函数的运行中定义的临时的空间叫做局部名称空间,只可以被这个函数所有。函数运行结束后,这个局部的名称空间就会销毁。
3,内置名称空间:内置名称空间中存放了python解释器为我们提供的名字:input,print,str,list,tuple...它们都是我们熟悉的,拿过来就可以用的方法。
三种名称之间的加载顺序

名字的查找的顺序
局部使用:局部名称空间——>全局名称空间——>内置名称空间

全局使用:全局——>内置

2.作用域
1全局作用域
内置的名称空间中的名字和全局名称空间的名字属于这个全局作用域。
全局作用域中的名字,在整个文件的任意位置都能被引用,全局存活,全局内都有效。
2.局部作用域
局部名称空间的名字属于局部作用域。
局部作用域中的名字只能在其本地局部生效和使用。
python 中局部作用域就是函数内定义或生成的名字,临时存活,随着函数调用的结束而消失。
二、高阶函数
特点
a.把一个函数的函数名当做实参传给另一个函数
b.函数本身可以作为另外一个函数的返回值


三、内部函数
在一个函数内部定义的函数

四、闭包
是另一个函数动态生成的函数,并且返回一个 包含了外部作用域而非全局作用域变量名称的 函数。这个函数可以使用外部作用域的变量。
