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())
当运行后,如果有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。