Python从入门到精通
上QQ阅读APP看书,第一时间看更新

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模块的功能。