Python基础教程-第6章-代码复用—模块-课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《Python基础教程-第6章-代码复用—模块-课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Python 基础教程 代码 模块 课件
- 资源描述:
-
1、学院 系部名称主讲:授课教师 姓名Python 基础教程第第 6 6章章 代码复用代码复用模块模块 Python基础编程Python 中,库 Library、包 Package、模块 Module,统称为模块。Python 自带了功能丰富 的标准库,另外还有数量庞大的各种第三方库。使用这些功能的基本方法就是使用模块。通 过函数,可以在程序中重用自己的代码;通过模块,则可以重用别的程序中的代码。本章的 目标是掌握模块的使用。第 6章 代码复用模块 Python基础编程【教学导航】【教学导航】学习目标学习目标1 1了解了解模块模块的的概念的的概念2 2掌握模块的使用掌握模块的使用 3 3了解包的概
2、念了解包的概念 4 4掌握常用模块的操作掌握常用模块的操作教学重点教学重点模块的使用、常用模块的操作教学方式教学方式案例教学法、分组讨论法、自主学习法、探究式训练法 课时建议课时建议6课时Python基础编程本章主要内容Python 中的包中的包模块概述模块概述模块的使用模块的使用123常用模块介绍常用模块介绍 4实训实训65Python基础编程第 6章 代码复用模块 模块是一个保存了模块是一个保存了 Python Python 代码的文件。模块能定义函数代码的文件。模块能定义函数、类和变量。模块中也能包含可、类和变量。模块中也能包含可 执行的代码。模块分为执行的代码。模块分为三种:自定义模块
3、、内置标准模块、开源模块(第三方三种:自定义模块、内置标准模块、开源模块(第三方)。v 学习目标学习目标 1 1了解模块的定义了解模块的定义 2 2了解命名空间与模块的关系了解命名空间与模块的关系Python基础编程6.1.1 6.1.1 模块定义模块定义 模块(模块(ModuleModule)是用来组织)是用来组织 Python Python 程序代码的一种程序代码的一种方法。当程序的代码量比较大时,可以将代码分成多个彼方法。当程序的代码量比较大时,可以将代码分成多个彼此联系又相互独立的代码段,而每个代码段可能包含数据此联系又相互独立的代码段,而每个代码段可能包含数据成员和方法的成员和方法的
4、 类(类(“数据成员和方法的类数据成员和方法的类”是面向对象是面向对象程序设计的说法,在没有面向对象程序设计的基础时,程序设计的说法,在没有面向对象程序设计的基础时,可以理解为数据和程序代码的总和)。这样的代码段是共可以理解为数据和程序代码的总和)。这样的代码段是共享的,所以可将代码段通过导入享的,所以可将代码段通过导入 (ImportImport)的手段加入)的手段加入到正在编写的程序中,让程序使用模块中这些可共享的代到正在编写的程序中,让程序使用模块中这些可共享的代码段。这样看码段。这样看 来,模块是一个包含诸多可共享的代码段来,模块是一个包含诸多可共享的代码段的组织单位。的组织单位。还有
5、一个更大的单位,称为包,它是用来组织模块的还有一个更大的单位,称为包,它是用来组织模块的。Python基础编程6.1.1 6.1.1 模块定义模块定义 模块的概念是站在逻辑结构层面建立的概念,它在磁模块的概念是站在逻辑结构层面建立的概念,它在磁盘中的存在形式仍然是文件。模块盘中的存在形式仍然是文件。模块 的文件名就是模块名的文件名就是模块名加上扩展名加上扩展名.py.py。模块文件名应尽量使用小写命名,首字。模块文件名应尽量使用小写命名,首字母保持小写,尽母保持小写,尽 量不要用下画线(除非多个单词,且数量不要用下画线(除非多个单词,且数量不多的情况)量不多的情况)模块可以理解为是一个包含了函
6、数和变量的模块可以理解为是一个包含了函数和变量的 pypy文件文件。在你的程序中引入了某个模块,就。在你的程序中引入了某个模块,就 可以使用其中的函可以使用其中的函数和变量。数和变量。模块也是模块也是 Python Python 对象,具有随机的名字属性用来绑对象,具有随机的名字属性用来绑定或引用。定或引用。简单地说,模块就是一个保存了简单地说,模块就是一个保存了 Python Python 代码的文件代码的文件。模块中能定义函数、类和变量。模块也能包含可执行的。模块中能定义函数、类和变量。模块也能包含可执行的代码。代码。Python基础编程6.1.1 6.1.1 模块定义模块定义 库:具有相
7、关功能模块的集合。这也是库:具有相关功能模块的集合。这也是 Python Python 的一大特色,即的一大特色,即具有强大的标准库、第三具有强大的标准库、第三 方库及自定义模块。方库及自定义模块。标准库:就是下载安装的标准库:就是下载安装的 Python Python 中那些自带的模块,要注意的中那些自带的模块,要注意的是,里面有一些模块是看是,里面有一些模块是看 不到的,比如像不到的,比如像 sys sys 模块,这与模块,这与 Linux Linux 下下看不到看不到 cd cd 命令是一样的。命令是一样的。第三方库:就是由其他的第三方机构发布的具有特定功能的模块第三方库:就是由其他的第
8、三方机构发布的具有特定功能的模块。自定义模块:用户可以自行编写模块,然后使用。自定义模块:用户可以自行编写模块,然后使用。Python基础编程6.1.26.1.2命名空间命名空间 命名空间是名称(标识符)到对象的映射。模块有自己唯一的命命名空间是名称(标识符)到对象的映射。模块有自己唯一的命名空间。名空间。变量作用域就是变量的使用范围。确定一个变量的作用域,首先变量作用域就是变量的使用范围。确定一个变量的作用域,首先要确定变量是否在其局要确定变量是否在其局 部命名空间,不在其局部命名空间时,再查部命名空间,不在其局部命名空间时,再查找是否在全局命名空间,最后在内置命名空间中找是否在全局命名空间
9、,最后在内置命名空间中 查找。因此,变量查找。因此,变量作用域与命名空间是有关联的。作用域与命名空间是有关联的。如果用户自己创建了一个模块如果用户自己创建了一个模块 mymodulemymodule,并且用户要在程序中使用,并且用户要在程序中使用模块模块 mymodule mymodule 中的中的 函数(方法)函数(方法)fun()fun(),则需要使用,则需要使用 mymodule.mymodule.fun()fun()形式,这实际上是指定了模块的命名空间。形式,这实际上是指定了模块的命名空间。即使在不同的模即使在不同的模块中有相同的函数(方法),因为使用了命名空间,也不至于产生使块中有相
10、同的函数(方法),因为使用了命名空间,也不至于产生使用上的用上的 冲突。冲突。Python Python 系统提供了几个内置函数用于支持模块。它们是:系统提供了几个内置函数用于支持模块。它们是:_import_()_import_()函数,它能实现与函数,它能实现与 import import 语句相同的功能;语句相同的功能;globals()globals()和和 locals()locals()函数,分别返回调用者的全局命名空间或函数,分别返回调用者的全局命名空间或局部命局部命 名空间。名空间。Python基础编程 6.2 6.2 模块的使用模块的使用 在Python解释器上不能直接使用函
11、数库中的函数,因为这些函数都封装在某一函数库中,要使用库中的某一函数,先要导入相应的函数库,或者称导入模块。v 学习目标学习目标 1 1了解模块的导入了解模块的导入 2 2掌握模块多种导入方式掌握模块多种导入方式 3 3了解模块的定位了解模块的定位 4 4掌握模块的查找掌握模块的查找 5 5了解自定义模块时外层代码的处理了解自定义模块时外层代码的处理 Python基础编程6.2.1 6.2.1 模块导入模块导入 模块使用前需要导入,导入后才能执行。所模块使用前需要导入,导入后才能执行。所谓执行,就是被导入的模块中定义的全局变谓执行,就是被导入的模块中定义的全局变 量被量被赋值、类及函数的声明将
12、被执行。赋值、类及函数的声明将被执行。导入模块使用导入模块使用 import import 语句和语句和 fromimport fromimport 语句。导入方法有以下三种。语句。导入方法有以下三种。方法方法 1 1:import import 方法方法 2 2:import import as as 方法方法 3 3:from from import import|*Python基础编程6.2.1 6.2.1 模块导入模块导入 对于第(对于第(1 1)种方法,使用函数时要写成:)种方法,使用函数时要写成:.;对;对于第(于第(2 2)种方法,使用)种方法,使用 函数时要写成:函数时要写成:
13、.;对;对于第(于第(3 3)种方法,直接写函数名就行。)种方法,直接写函数名就行。1 1import import 语句语句 想使用想使用 Python Python 源文件,只需在另一个源文件中源文件,只需在另一个源文件中执行执行 import import 语句,语法如下:语句,语法如下:import import 使用使用 import import 语句可以导入整个模块。语句可以导入整个模块。例如:例如:import sys import sys 这是导入这是导入 Python Python 标准库的标准库的 sys sys 模块。模块。sys sys 模块提供了许多函数模块提供了许
14、多函数和变量来处理和变量来处理 Python Python 运行运行 时环境的不同部分。时环境的不同部分。Python基础编程6.2.1 6.2.1 模块导入模块导入 import 语句执行的过程是:在搜索路径中找到指定的模块,然后加载该模块。如果在一 个程序的顶层导入指定模块,则所指定模块的作用域是全局的;如果在函数中导入,那么它 的作用域是局部的。搜索路径是一个解释器会先进行搜索的所有目录的列表。如想要导入模块 hello.py,需要 把命令放在脚本的顶端。当解释器遇到 import 语句,如果模块在当前的搜索路径中就会被 导入,如例 6-2-1 所示。Python基础编程6.2.1 6.
15、2.1 模块导入模块导入 以上实例输出结果如下:1.4142135623730951 导入模块后,必须要通过“模块名.函数名”调用模块中的函数,不能直接使用模块中的 函数名,否则会报错,如上例中,直接使用“print(sqrt(2)”语句,将报“name sqrt is not defined”错误。因为在当前命名空间下,不包括 sqrt()函数的定义。不管执行了多少次 import。一个模块只会被导入一次,这样可以防止导入模块被一遍又 一遍地执行。Python基础编程6.2.1 6.2.1 模块导入模块导入 2import as语句 在例 6-2-1 中,使用 import math 导入数
16、学模块,此时调用函数时,函数前面需要添加模 块名,如 math.sqrt()。如果模块名字比较长或名称可能重复,或不想直接使用模块名进行调 用,这时可以使用 import as语句,语法如下:import as 使用 as 创建别名,然后再通过别名进行模块内函数调用,调用格式为“别名.函数名”。操作如例 6-2-2 所示。例 6-2-2 导入数学模块。Python基础编程6.2.1 6.2.1 模块导入模块导入 以上实例输出结果如下:以上实例输出结果如下:3 3fromimport fromimport 语句语句 有时候,需要在默认空间下直接使用某模块的相关函数,此时有时候,需要在默认空间下直
17、接使用某模块的相关函数,此时可以使用可以使用 from import from import 语句。语句。Python Python 的的 from from 语句从模语句从模块中导入一个指定的部分到当前命名空间中。语法如下:块中导入一个指定的部分到当前命名空间中。语法如下:from from import import 例如,要导入数学模块例如,要导入数学模块 math math 的的 sqrt sqrt 函数,使用如下语句:函数,使用如下语句:from math import sqrt from math import sqrt Python基础编程6.2.1 6.2.1 模块导入模块导入
18、 这个声明不会把整个这个声明不会把整个 math math 模块导入到当前的命名空间中,它会将模块导入到当前的命名空间中,它会将 math math 中的中的 sqrt sqrt 单个引单个引 入到执行这个声明的模块的全局符号表,此时,不入到执行这个声明的模块的全局符号表,此时,不可使用可使用“模块名模块名.函数名函数名”进行调用,需进行调用,需 直接使用从模块中导入的函数名直接使用从模块中导入的函数名。实例如例。实例如例 6-2-3 6-2-3 所示所示 例例 6-2-3 6-2-3 导入数学模块中的单个函数到当前命名空间。导入数学模块中的单个函数到当前命名空间。以上实例输出结果如下:以上实
19、例输出结果如下:4 4fromimport fromimport*语句语句 fromimportfromimport*语句的语法格式如下:语句的语法格式如下:from from 模块名模块名 import import*fromimport fromimport*语句可以导入模块的某些属性,也可以使用语句可以导入模块的某些属性,也可以使用“from from module import module import*”导入导入 所有属性。所有属性。Python基础编程6.2.1 6.2.1 模块导入模块导入 把一个模块的所有内容全都导入到当前的命名空间也是可行的,如导把一个模块的所有内容全都导入
20、到当前的命名空间也是可行的,如导入入 math math 模块的全部模块的全部 内容,只需使用如下声明:内容,只需使用如下声明:from math import from math import*这提供了一个简单的方法来导入一个模块中的所有项目。使用这种导这提供了一个简单的方法来导入一个模块中的所有项目。使用这种导入方法和第三种方入方法和第三种方 式相似,也不可使用式相似,也不可使用“模块名模块名.函数名函数名”进行调用,需进行调用,需直接使用模块中的函数名。然而这种直接使用模块中的函数名。然而这种 声明不该被过多地使用,否则内存消声明不该被过多地使用,否则内存消耗比较大。耗比较大。Pytho
21、n基础编程6.2.2 6.2.2 模块定位查找模块定位查找 1 1定位模块定位模块 当导入一个模块,当导入一个模块,Python Python 解释器对模块位置的搜索顺序是:解释器对模块位置的搜索顺序是:当前目录。当前目录。如果不在当前目录,如果不在当前目录,Python Python 则搜索在则搜索在 shell shell 变量变量 PYTHONPATH PYTHONPATH 下下的每个目录。的每个目录。如果还找不到,如果还找不到,Python Python 会查看默认路径。会查看默认路径。Windows Windows 下,默认路径一下,默认路径一般是般是 Python Python 安
22、装路安装路 径。径。UNIX UNIX 下,默认路径一般为下,默认路径一般为/usr/local/lib/usr/local/lib/python/python/。模块搜索路径存储在模块搜索路径存储在systemsystem模块的模块的sys.pathsys.path变量中。变量中包含当变量中。变量中包含当前目录、前目录、PYTHONPATH PYTHONPATH 和由安装过程决定的默认目录。和由安装过程决定的默认目录。Python基础编程6.2.2 6.2.2 模块定位查找模块定位查找 2 2模块的查找模块的查找 当用户需要导入一个模块时,用户会使用当用户需要导入一个模块时,用户会使用imp
23、ortimport命令命令在搜索路径中查找指定模块的文件名。在搜索路径中查找指定模块的文件名。搜索路径是一个特定目录的集合,搜索路径是一个特定目录的集合,Python Python 系统只在这系统只在这些特定的搜索路径中查找模块文件些特定的搜索路径中查找模块文件 名。这个特定的目录是名。这个特定的目录是 Python Python 系统安装时确定的默认搜索路径。系统安装时确定的默认搜索路径。默认搜索路径被保存在默认搜索路径被保存在 sys sys 模块的模块的 sys.path sys.path 变量中变量中,用户可以使用命令查看。实例如例,用户可以使用命令查看。实例如例 6-2-4 6-2-
24、4 所示。所示。例例 6-2-4 6-2-4 查看查看 Python Python 默认搜索路径。默认搜索路径。Python基础编程6.2.2 6.2.2 模块定位查找模块定位查找 以上实例输出结果如下:这是前面页命令产生的结果,是一个列表。可以通过 append()方法向 sys.path 变量中增加一个目录:sys.path.append(要增加的目录路径)如果是用户自己建立的模块,应该将模块的文件(例如前面说的 mymodule.py)存放在 指定的目录中。Python基础编程6.2.2 6.2.2 模块定位查找模块定位查找 当当 Python Python 系统解释器在标准模式下启动时
25、,一些模系统解释器在标准模式下启动时,一些模块会被解释器自动导入,它们是与系块会被解释器自动导入,它们是与系 统操作相关联的模块统操作相关联的模块,如:,如:builtins builtins 模块。模块。Python Python 中有些内置函数,不需要导入模块,就可以直中有些内置函数,不需要导入模块,就可以直接使用,例如接使用,例如 abs()abs()。Python基础编程6.2.3 6.2.3 自定义模块调用自定义模块调用 在规范的代码中,通常都会有一句在规范的代码中,通常都会有一句“if_name_=_main_if_name_=_main_:”作为程序的入口,但到作为程序的入口,但
展开阅读全文