
1.6 Python模块
Python模块(Module)又称为库,Python拥有丰富的模块,且有很多第三方模块,另外开发者也可以自定义模块。模块能够有逻辑地组织Python代码段,极大地提高程序的开发效率。
Python模块是一个Python文件,以“.py”结尾,模块内包含定义函数、类和变量,模块里也能包含可执行的代码。
1.6.1 模块分类
Python中的模块其实就是一个Python文件(以“.py”为后缀名的文件),每一个模块都是一个独立的Python文件。在项目中可以使用不同模块,从而调用不同模块中的函数等功能。Python中的标准库与模块类似。
Python的模块可分为以下几种。
(1)系统内置模块。例如:sys、time、json模块等,典型示例如下。
① os.getcwd():获取当前工作目录。
② os.listdir("path"):列出指定目录下的所有文件和子目录,包括隐藏文件,返回值是列表。
③ os.remove("file"):删除单个文件。
④ time.time():获取当前的时间。
⑤ time.localtime([timestamp]):获取当前本地的时间,类型为struct_time。
⑥ time.sleep(timestamp):程序睡眠,单位为秒。
⑦ random.random():返回(0,1)之间的浮点型随机数。
⑧ random.uniform(a,b):返回区间(a,b)浮点型数字。
⑨ json.loads():将json字符串解码成Python对象。
⑩ json.dumps:将Python对象转换为json字符串。
(2)自定义模块。自定义模块是自己写的模块,对某段逻辑或某些函数进行封装后形成模块,以供其他函数调用。需要注意,自定义模块的名称不能和系统内置的模块重名,否则将无法导入系统的内置模块。
(3)第三方模块。第三方模块可以通过pip install命令进行安装。典型自定义模块如下。
① Requests:操作HTTP库。Python程序员一般使用它访问网络。
② Scrapy:实现网络爬虫。
③ BeautifulSoup:XML和HTML的解析库。
④ NumPy:数学库,为Python提供很多高级的数学方法。
⑤ Matplotlib:一个绘制图的库,可在分析数据中可视化数据。
⑥ Twisted:网络应用开发者需要的重要工具。
模块有如下四种表现形式。
(1)使用Python语言编写的py文件。
(2)已被编译为共享库或DLL的C或C++扩展。
(3)把一系列模块组织到一起的文件夹(文件夹中有一个“__init__.py”文件,该文件夹称为“包”)。
(4)使用C语言编写并连接到Python解释器的内置模块。
一个模块只会被导入一次,当使用import语句导入模块的时候,Python首先搜索文件,从Python的搜索路径进行搜索,搜索路径被存储在sys模块中的path变量。
1.6.2 自定义模块
自定义模块是将相关的代码编写在一个独立的文件中,并且将该文件命名为Python文件。包是一个文件夹,和别的文件夹不一样的是,其中包含一个“__init__.py”文件。包是从逻辑上来组织模块的,也就是说它是用来存放模块的。如果想导入其目录下的模块,那么这个目录必须首先是一个包才能导入。
模块文件创建完成以后,在另一个Python文件中可以导入模块,也可以调用模块内的函数、类、变量等。导入模块的方法如下。
1.使用import导入模块
格式:import module1[, module2[,... moduleN]]。
模块可以是自定义模块、Python内置模块和已经安装的第三方模块。
2.使用import as语句
格式:import modulename as name,该方法只能通过name来引用
可以将模块名modulename重新命名为name,有时候导入的模块或是模块属性名称已经在程序中使用了,或者太长不便输入,即可使用自己想要的名字替换模块的原始名称。
3.使用from import导入
格式:from Packagename import modulename1[, moduleclassname2[, ... moduleclassnameN]]。
从包Packagename中导入子类modulename1、modulename2,如果模块中存在许多子模块,则使用from import会更直截了当,在代码中可以直接使用导入的模块。
4.from modname import*
此方法可把一个模块的所有内容全都导入到当前的命名空间。
如果导入的模块与当前代码文件不在同一目录,则需要指定导入模块的目录,方法如下。
(1)导入sys模块。
(2)通过sys.path.append(path)函数导入自定义模块所在的目录。
(3)导入模块。
示例如下。

另外还可采用一种形式:from modulename import attrname as name,这种形式只能通过name来引用。
1.6.3 第三方模块的安装
Python第三方模块的安装方法如下。
1.Pip安装(远程安装)
Python3.4以上的版本自带Pip工具,安装完以后,在其安装目录的Script目录下即是pip工具,如图1-33所示。

图1-33 pip工具
可以使用pip命令安装Python第三方模块,方法如下。
在命令行窗口直接输入“pip(pip3)install第三方模块名”。
例如,输入pip3 install pymysql,即可安装pymysql模块,如图1-34所示。

图1-34 安装pymysql模块
例如,输入pip install pandas,即可安装pandas模块,如图1-35所示。

图1-35 安装pandas模块
安装完成以后,在Python 3.x安装目录的子目录“\Python37\Lib\site-packages”中可以看到安装的内容,如图1-36所示。

图1-36 安装的pymysql和pandas模块
卸载模块命令为“pip uninstall模块名”,pymysql卸载命令为pip uninstall pymysql,如图1-37所示。

图1-37 pip卸载模块
pip命令的其他功能如下。
(1)pip list:查看所有包。
(2)pip list--not required:查看不被依赖的包。
(3)pip list-outdated:查看过期的包。
(4)pip show pandas:查看某个包(pandas)的具体信息。
2.本地安装
下载模块文件包并将其复制到相关文件夹。
(1)setup.py文件的安装。打开cmd命令行工具,切换到setup.py文件所存在的文件夹,执行命令:“python3 setup.py install”,进行安装。
(2).whl文件的安装。打开cmd命令行工具,切换到whl文件所存在的文件夹,执行命令:“pip install whl文件”,进行安装。
3.其他安装
在PyCharm中安装第三方模块的方法前面已经做过介绍,在Anaconda中安装第三方模块将在后面章节介绍。