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

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。    
posted @ 2017-07-28 20:29  forjie  阅读(159)  评论(0编辑  收藏  举报