python命名空间和作用域

一、命名空间

定义:名称到对象的映射。命名空间是一个字典的实现,键为变量名,值是变量对应的值。各个命名空间是独立没有关系的,一个命名空间中不能有重名,但是不同的命名空间可以重名而没有任何影响。

分类:

1、全局命名空间:

在代码一运行时就创建的命名空间。

2、局部命名空间:

指在程序运行过程中开辟的临时空间,比如函数,类

3、内置命名空间:

在程序运行加载代码前,提前开辟用于存储常用内置方法的空间,比如input,print,str,list,都属于内置命名空间的变量

载顺序:
加载顺序:内置命名空间(程序运行前加载)->全局命名空间(程序运行中:从上到下加载)->局部命名空间(程序运行中:调用时才加载)
取值顺序:
  在局部调用:局部命名空间->全局命名空间->内置命名空间
  在全局调用:全局命名空间->内置命名空间

  

 二、作用域

全局作用域:包含内置名称空间、全局名称空间,在整个文件的任意位置都能被引用、全局有效

局部作用域:局部名称空间,只能在局部范围生效

global关键字,nonlocal关键字。

global:

  1,声明一个全局变量。

  2,在局部作用域想要对全局作用域的全局变量进行修改时,需要用到 global(限于字符串,数字)。

nonlocal:

  1,不能修改全局变量。

  2,在局部作用域中,对父级作用域(或者更外层作用域非全局作用域)的变量进行引用和修改,并且引用的哪层,从那层及以下此变量全部发生改变。

原文地址:https://www.cnblogs.com/linshuhui/p/9489559.html