1.12 初识Python模块
学习是有梯度的。在初学编程时务必先建立对编程概念的感性认识,不要把过多的时间虚耗在对复杂概念的抽象理解上。所谓感性认识,就是依托于你的想象力,把生活中的经验与编程概念结合起来。
先建立起对编程的感性认识,能激发出对学习的兴趣,而后再逐步加深对概念的理解。
学习是一个渐进的过程,也是一个重复的过程。这本节中,笔者从生活中的例子出发来讲解Python中的模块。
1.12.1 Python中的模块
用文本编辑器打开一个Python文件,常会在文件头部看到这样几行代码:
import module1 import module2
import单词有“导入”的含义,而位于其右侧的正是Python中的“模块”,“import+空格+模块名”意为从当前源文件中导入某个模块。模块的英语单词是module,对于初学者来说模块这一概念可能有点抽象。
编程中的许多概念都源于生活经验,模块亦然。以手机为例,摄像头是它的一个组件,按键也是它的一个组件,各种基础组件共同组装成一部手机,这里的手机组件即模块,如图1-15所示。
图1-15
在Python中,读者可以把要实现的一系列功能通过变量、函数和类等工具写成一个模块。关于变量、函数和类等,在后续的章节中会进行详细讲解,这里只需要知道有这些概念即可。
模块可以重复使用,这是它的一个很重要的意义。再次以手机为例,手机的按键或其他部件如果损坏了,我们可以换个新的部件继续使用。
Python程序员会把模块写到文件中,Python文件以.py为扩展名,但.py对Python来说并不是必需的(这里不过多地阐述这类逻辑概念),.py对于用户的意义就是当人们看到以.py为扩展名的文件时会想到这是Python文件。
笔者有话说
本书的第16章有关于模块的进一步描述,笔者会一步一步地教读者实现一个自定义的模块。本节只起一个引领的作用,让读者对模块有一个直观的印象。
1.12.2 Python模块导入的基本语法
在当前的Python文件中,如果需要使用其他模块的功能,需要进行模块的导入。在Python中使用import语句来实现模块的导入。导入模块主要有以下3种形式。
● 一次性导入整个模块:import 模块名
os是Python中的内置模块,如需一次性导入整个os模块,可以采用以下语法:
import os
● 导入模块下的子模块:from 模块名 import 子模块名
例如,path是os模块下的子模块,如需导入path模块,可以采用以下语法:
from os import path
split 是path模块下的一个方法模块,如只需导入split模块,可使用成员操作符“.”来导入。
from os.path import split
from os.path import split表示从os模块中的path模块中导入split模块。
● 为导入的模块取一个别名
使用as关键字可以为导入的模块取别名。继续以os模块为例,为导入的os模块取别名Windows,代码如下。
import os as Windows
为os模块下的path取别名Windows_path,代码如下。
from os import path as Windows_path
1.12.3 Python的内置模块
在安装Python时,会同时安装一系列基础模块。Python的内置模块是为节省开发者时间而预先编写的一系列基础组件。当开发者需要使用某个内置模块时,直接使用“import ”导入相应模块即可。
1.12.4 Python中的模块查找
Python默认会在当前目录中进行模块查找,如果找不到,会在指定路径中进行模块的查找,通过PYTHONPATH环境变量可配置模块的查找路径。所有的模块查找路径都保存在sys模块的path属性中。
1.12.5 技术总结
本节主要包含以下4个重要的知识点,请读者加以巩固。
① 使用“import 模块名”的语法来导入一个模块。
② 模块的一个很重要的意义在于它可以被重复使用,也就是所谓“复用”。
③ Python文件常以.py为扩展名,我们通过函数、类等工具将要实现的功能以模块的形式写到Python文件。
④ Python的环境变量为PYTHONPATH。
1.12.6 课后习题
(1)谈谈你对模块的理解。
(2) Python中的内置模块sys有一个getsizeof()方法,请你写一行代码,只导出sys模块下的getsizeof()方法。
(3)写一行代码,为os.path模块下的getsize()方法取一个别名。
(4)查找相关资料,然后描述os模块与sys模块的功能。