作用域
定义:就是作用的范围(也叫做名称空间);
按照生效的范围来看,又分为全局作用域和局部作用域。
命名空间:本质是从名称到对象的映射,一一对应的关系,一一字典来实现的。
a = 10 定义这个变量时,Python会申请内存空间存放10,然后将名字a与10绑定关系存放在名称空间中。
如何清除绑定关系? del a
名称空间:
内置名称空间 :随着Python解释器启动而产生,停止而回收。第一个被加载
全局的名称空间:随着所在执行文件,执行结束而回收。第二个被加载
局部名称空间:随着函数的调用而产生,结束而回收。如函数的参数、函数内定义的名字。
全局作用域:包含内置命名空间和全局命名空间
局部作用域:在函数内可以使用
Python查找变量的顺序:局部的命名空间--》全局命名空间-》内置命名空间
变量的作用域:
局部变量:函数内部定义的变量从定义位置开始到函数定义结束位置有效。
全局变量:函数外部定义的变量在整个文件中有效。
注意:函数间不能共享内部定义的变量格式;函数内可以使用全局变量
- global关键字
global 关键字:将变量声明为全局变量
语法格式:
global 变量名
这种声明只针对一些
不可变对象
的声明
- nonlocal
nonlocal 关键字:将变量声明为外层变量(外层函数的局部变量,而且不能是全局变量)