python基础-操作函数4
一、函数的嵌套调用:
在调用一个函数的时候,其内部的代码又调用其它的函数
二、函数的嵌套定义:
在一个函数的内部又定义了另一个函数
三、名称空间与作用域
什么是名称空间:是内存开辟存放 变量名和值的地址绑定关系 的地方。key-value 形式。
x=1;干了什么事情?
1.向内存申请一块空间,将值1放进去。
2.将值1的内存地址与x变量名建立绑定关系
3.这个绑定关系和x变量名会存放在名称空间
要取得值必须通过名字才能找,而名字又在名称空间中存放,所以在取值时首先是去名称空间中找到名字,自然就拿到值的内存地址
四、名称空间分三种:
1.内置名称空间:存放python解释器自带的名字
生命周期:在解释器启动时产生,在解释器关闭时回收
作用范围:
2.全局名称空间:存放
生命周期:在运行py文件生效,py文件运行结束被回收
作用范围:
3.局部名称空间:存放的是函数内部定义的名称
生命周期:在调用函数时临时生效,函数结束后,立即被回收
作业范围:
加载顺序:内置名称空间-》全局名称空间-》局部名称空间
查找顺序:当前位置名称空间-》上级名称空间-》内置名称空间
五、作用域
域指的是范围,作用域指的是作用范围
分为:
全局作用范围:包含内置名称空间与全局名称空间。
特点:全局有效,全局存活。
局部作用范围:包含局部名称空间的名字
特点:局部有效,临时存活
globals:返回的是全局作用域中的名字
dir(globals()['__builtins__']):返回的是全局作用域内置的名字
locals:返回的是局部作用域的名字
注意:被调用才会产生名称空间
函数的作用域关系是在函数定义阶段决定的,与函数的调用位置无关
即在调用函数时,一定要在定义函数的位置寻找作用域关系
情况2:
情况3:
情况4:
六、global关键字,nonlocal关键字
global关键字的作用:在局部声明变量是来自于全局的
nonlocal关键字的作用:在局部声明变量是来自于函数局部的(不能出函数)
注意:(不能出函数)