第9章 模块ppt课件.ppt
第9章 模块第第9章章 模块模块模块(module)是用来组织Python程序代码的一种方法。当程序的代码量比较大时,可以将代码分成多个彼此联系、又相互独立的代码段,这每个代码段可能包含数据成员和方法的类(“数据成员和方法的类”是面向对象程序设计的说法,在没有面向对象程序设计的基础时,可以理解为数据和程序代码的总和)。这样的代码段是共享的,所以可将代码段通过导入(import)的手段加入到正在编写的程序中,让程序使用模块中这些可共享的代码段。这样这样看来,模块是一个包含诸多可共享的代码段的组织单位。还有一个更大的单位,称为包,它是用来组织模块的。模块的概念是站在逻辑结构层面建立的概念,它在磁盘中的存在形式仍然是文件。模块的文件名就是模块名加上扩展名模块的文件名就是模块名加上扩展名.py。9.1 名称空间名称空间9.2 导入模块导入模块9.1 名称空间名称空间1. 名称空间的概念名称空间的概念名称空间是名称(标识符)到对象的映射。第2章介绍过,让一个变量引用一个对象,实际上是绑定这个变量的标识符到指定的对象,在名称空间添加变量名称,引用计数器加1。第5章介绍过,确定一个变量的作用域,首先要确定变量是否在其局部名称空间,不在其局部名称空间时,再查找是否在全局名称空间,最后在内置名称空间中查找。看来作用域与名称空间是有关联的。模块也有自己唯一的名称空间。如果用户自己创建了一个模块mymodule,并且用户要在程序中使用模块mymodule中的函数(方法)fun(),则需要使用mymodule. fun()形式,这实际上是指定了模块的名称空间。即使在不同的模块中有相同的函数(方法),因为使用了名称空间,也不至于产生使用上的冲突。2. 模块的查找模块的查找当用户需要导入一个模块时,用户会使用import命令在搜索路径中查找指定模块的文件名。这说明:搜索路径是一个特定目录的集合,Python系统只在这些特定的搜索路径中查找模块文件名。这个特定的目录是Python系统安装时确定的默认搜索路径。默认搜索路径被保存在sys模块的sys.path变量中,用户可以使用命令查看: import sys sys.path, C:Windowssystem32python33.zip, C:Python33DLLs, C:Python33lib, C:Python33Libsite-packagespythonwin, C:Python33, C:Python33libsite-packages, C:Python33libsite-packageswin32, C:Python33libsite-packageswin32lib这是前面页命令产生的结果这是前面页命令产生的结果 ,是,是一个列表一个列表。通过append()方法向sys.path变量中增加一个目录: sys.path.append(要增加的目录路径要增加的目录路径)如果是用户自己建立的模块,应该将模块的文件(例如前面说的mymodule.py)存放在指定的目录中。9.2 导入模块导入模块1. 导入语句导入语句导入模块使用import语句和from-import语句。import语句的语法格式如下:import module1, module2, ., moduleNimport语句导入整个模块。import语句执行的过程是:在搜索路径找到指定的模块,加载该模块。如果在一个程序的顶层导入指定模块,则所指定模块的作用域是全局的;如果在函数中导入,那么它的作用域是局部的。from-import语句的语法格式如下:from module import name1, name2, ., nameNfrom-import语句导入模块的某些属性。也可以使用“from module import *”导入所有属性。例如: import sys这是导入Python标准库的sys模块。sys模块提供了许多函数和变量来处理 Python 运行时环境的不同部分。2. 模块导入的特征模块导入的特征模块被导入是要被执行的。所谓执行,就是被导入的模块中定义的全局变量被赋值、类及函数的声明将被执行。只有第一次导入模块,导入的模块才会被执行。3. 与模块导入有关的内置函数与模块导入有关的内置函数Python系统提供了几个内置函数用于支持模块。它们是:_import_()函数,它实现与import语句相同的功能;globals()和locals()函数,分别返回调用者的全局名称空间或局部名称空间。 包的概念包的概念包是模块更上一层的概念,一个包可以包含多个模块包是模块更上一层的概念,一个包可以包含多个模块。包能够帮助用户将有联系的模块组织在一个包内;同时还可以解决模块名冲突。包的导入同样使用import语句或from-import语句实现。建立包的方法:在Python的工作目录下的LIB子目录中建立一个目录,这个建立的目录名就是包的名字目录名就是包的名字;将模块置入包(目录)内。5. 自动载入的模块自动载入的模块当Python系统解释器在标准模式下启动时,一些模块会被解释器自动导入,它们是与系统操作相关联的模块。如:builtins模块。sys.modules变量包含了已完整导入解释器系统的模块的字典,模块名是键,模块所在的位置是值。那么,我们可以通过字典方法keys()查询已导入的模块。例如: import sys sys.modules.keys()本章重点介绍了名称空间和模块的导入方法。模块内的函数、数据对象是他人已编写好了的程序代码,这些程序代码是可以共享的,当然可以借来使用。这样,对程序员来说,节约了编写这一部分程序的时间,提高了编程效率。使用他人的代码与数据是通过模块导入方法实现的,这个实现过程涉及名称空间,也就是说你引入的数据对象或代码在什么范围内可使用。