1 / 16
文档名称:

Python程序设计教程-第7章--模块和包.ppt

格式:ppt   大小:124KB   页数:16页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

Python程序设计教程-第7章--模块和包.ppt

上传人:wwlgqnh 2022/7/26 文件大小:124 KB

下载得到文件列表

Python程序设计教程-第7章--模块和包.ppt

相关文档

文档介绍

文档介绍:第7章 模块和包
Python程序是由包、模块、函数组成的。其中,包是由一系列模块组成的集合,而模块是处理某一类问题的函数或(和)类的集合。
命名空间
命名空间是从变量或标识符的名称到对象的映射。当一个名称第7章 模块和包
Python程序是由包、模块、函数组成的。其中,包是由一系列模块组成的集合,而模块是处理某一类问题的函数或(和)类的集合。
命名空间
命名空间是从变量或标识符的名称到对象的映射。当一个名称映射到一个对象上时,这个名称和这个对象就绑定了。我们可以把命名空间理解为一个容器,在这个容器中可以装许多名称。
命名空间的分类
Python中有三类命名空间:内建命名空间、全局命名空间和局部命名空间
命名空间的规则
赋值语句(包括显式赋值和隐式赋值)会把名称绑定到指定对象中,赋值的地方决定名称所处的命名空间。
函数、类定义会创建新的命名空间。
Python搜索一个名称的顺序是“LEGB”。
第一层是L(local),表示在一个函数定义中,而且在这个函数里面没有再包含函数的定义。
第二层是E(enclosing function),表示在一个函数定义中,但这个函数里面还包含有函数的定义,其实L层和E层只是相对的,这两层空间合起来就是上面所说的局部命名空间。
第三层是G(global),表示一个模块的命名空间,,且在函数或类外构成的一个空间,这一层空间对应上面所说的全局命名空间。
第四层是B(builtin),表示Python解释器启动时就已经加载到当前编程环境中的命名空间,之所以叫builtin是因为在Python解释器启动时会自动载入__builtin__模块,这个模块中的list、str等内置函数就处于B层的命名空间中,这一层空间对应上面所说的内建命名空间。
模块
在Python中,模块就是一个包含变量、函数或类的定义的程序文件,除了各种定义之外,还可包含其他的各种Python语句。
在大型系统中,往往将系统功能分别使用多个模块来实现或者将常用功能集中在一个或多个模块文件中,然后在顶层的主模块文件或其它文件中导入使用。
Python本身也提供了大量内置模块,并可集成各种扩展模块。
导入模块
模块需要先导入,然后才能使用其中的变量或函数。可使用import或from语句来导入模块,基本格式如下。
import 模块名称
import 模块名称 as 新名称
from 模块名称 import 导入对象名称
from 模块名称 import 导入对象名称 as 新名称
from 模块名称 import *
导入与执行语句
import和from语句在执行导入操作时,会执行被导入的模块。模块中的赋值语句执行时创建变量,def语句执行时创建函数对象。总之,模块中的全部语句都会被执行,且只执行一次。当再次使用import或from语句导入模块时,不会执行模块代码,只是重新建立到已经创建的对象的引用而已。所以,import和from语句是隐性的赋值语句。
Python执行import语句时,创建一个模块对象和一个与模块文件同名的变量,并建立变量和模块对象的引用。
Python执行from语句时,会同时在当前模块和导入模块中创建同名变量,并引用模块在执行时创建的对象。
import及from的使用
在使用import导入模块时,模块中的变量名使用“模块名.“作为限定词,所以不存在歧义,即使与其它模块变量同名也没有关系。在使用from时,当前模块的同名变量引用了模块内部的对象。在遇到与当前模块或其它模块变量同名时,使用时应特别注意。
1.使用模块内的可修改对象
使用from导入模块时,可以直接使用变量名引用模块中的对象,避免了输入“模块名.”作为限定词。这种便利有时也会遇到麻烦。
2.使用from导入两个模块中的同名变量

重新载入模块
很多时候,再次使用import和from导入模块时,其本意通常是重新执行模块代码,恢复相关变量到模块执行时的状态。显然,这种愿望通过再次使用import和from导入是无法达到的。
因此,Python在imp模块中提供了reload函数来重新载入并执行模块代码。使用reload重载模块时,如果模块文件已经被修改,则会执行修改后的代码。
reload函数用模块变量名作为参数,重载对应模块,所以reload重载的必须是使用import语句已经导入的模块。
嵌套导入模块
Python允许任意层次的嵌套导入模块。