Python3 命名空间和作用域

目录

一、命名空间

(一)简介

1、命名空间(Namespace)是从名称到对象的映射,大部分的命名空间都是通过 Python 字典来实现的。

2、命名空间提供了在项目中避免名字冲突的一种方法。

3、各个命名空间是独立的,没有任何关系的,所以一个命名空间中不能有重名,但不同的命名空间是可以重名而没有任何影响。

4、我们举一个计算机系统中的例子,一个文件夹(目录)中可以包含多个文件夹,每个文件夹中不能有相同的文件名,但不同文件夹中的文件可以重名。

 (二)一般有三种命名空间

1、内置名称(built-in names)

2、全局名称(global names)

3、局部名称(local names)

 (三)命名空间查找顺序:

 (四)命名空间的生命周期

 二、作用域

(一)简介

(二)Python 的作用域有四种:

1、L(Local)

2、E(Enclosing)

3、G(Global)

4、B(Built-in)

(三)规则顺序:L –> E –> G –> B。

1、在局部找不到,便会去局部外的局部找(例如闭包),再找不到就会去全局找,再者去内置中找。

 2、内置作用域是通过一个名为 builtin 的标准模块来实现的,但是这个变量名自身并没有放入内置作用域内,所以必须导入这个文件才能够使用它。

3、在Python3.0中,可以使用以下的代码来查看到底预定义了哪些变量:

 4、Python 中只有模块(module),类(class)以及函数(def、lambda)才会引入新的作用域,其它的代码块(如 if/elif/else/、try/except、for/while等)是不会引入新的作用域的,也就是说这些语句内定义的变量,外部也可以访问,如下代码:

(四)全局变量和局部变量

1、定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域。

2、局部变量只能在其被


比丘资源网 » Python3 命名空间和作用域

发表回复

提供最优质的资源集合

立即查看 了解详情