函数进阶------闭包函数

Posted forjie

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了函数进阶------闭包函数相关的知识,希望对你有一定的参考价值。

1,命名空间:

定义:存放名字与值的绑定关系。

一个分为三种:全部命名空间,局部命名空间,内置命名空间。

内置命名空间:就是python为我们内置的一些可以直接拿来用的方法。

三种空间的加载顺序:内置命名空间(程序加载前)---全局命名空间(从上到下的顺序)----局部命名空间(调用的时候才开辟的空间)

 

2:作用域

定义:作用域就是作用范围

分为2中:内置名称空间和全局名称空间

3:globals:把局部名称空间的转化成全局名称空间,但是在所有的高级语言中,

都不常用,没到不得已的时候不要用。

locals:把全局名称空间变为局部名称空间。

 

nonlocal关键字

 

外部必须有这个变量
在内部函数声明nonlocal变量之前不能再出现同名变量
内部修改这个变量如果想在外部有这个变量的第一层函数中生效
4,函数名的本质就是要个变量。
5.闭包函数:
内部函数包含对外部作用域而非全局作用域名字的引用,就叫闭包函数。
只要内部函数引用了外部作用域的变量,外面的变量就不会消失,以便以后的随时调用。
基本模型:
def func():
    name = eva
    def inner():
        print(name)

判断闭包函数的方法__closure__

 

技术分享
1 def func():
2     name=alex
3     def inner():
4         print(name)
5     print(inner_closure_)
6     
7      return inner
8 print(func())   
View Code

 

当运行后,如果有cell的话,就表示是闭包函数。

如果没有就不是。

三元算法

def my_max(x,y):
    m=x if x>y else y
    return m
print(my_max(10,20))
这里的m=x if x>y else y就是一个三元算法。
前面m=x表示的是if x>y m=x,如果不是就是m=y。    










以上是关于函数进阶------闭包函数的主要内容,如果未能解决你的问题,请参考以下文章

少女学习日记——函数进阶闭包以及递归

函数进阶之闭包函数和装饰器

JavaScript 进阶第八章(闭包)

python进阶一(函数式编程)2-6 python中闭包

JavaScript函数进阶回调函数递归函数闭包函数

11函数进阶---闭包