1 模块
1.1 模块的定义
在编程语言中,代码块 >> 函数 >> 类 >> 模块 >> 包(库),是逐级封装,层层调用的关系。在Python中,一个.py
文件就是一个模块,模块是比类更高一级的封装。
- 代码块:小至一行代码,大到一个模块,一个函数……都是代码块,此处指一行代码
- 函数:函数是指封装好、能复用,用来实现单一特定功能的代码块
- 类:类是数据类型概念的发展,用来描述相似对象的共性,对象所属的数据类型就是“类”
- 模块:一个
.py
文件就是一个模块,包含定义好的函数和变量。分为自定义模块、内置模块和第三方模块 - 包:包是以目录形式存在的模块集合,类似于包含
__init__.py
文件的文件夹,它包含__init__.py文件、子包及多个模块。包是比模块高一级的封装 - 库:具有相关功能包的集合。分为标准库、第三方库以及自定义模块
特别说明:模块、包、库三者其实都是模块,只不过是个体和集合的区别,是对模块的不同组织方式。库和包的关系,类似于类与对象,库是抽象的,包是具体的。
自定义模块就是你自己编写的模块,如果你在网上发布自己的模块并允许他人使用,那么就变成了第三方模块,内置模块是python安装包自带的模块。使用模块的好处又很多,比如:
- 可维护性:提高了代码的可维护性
- 可复用性:编写代码不必从零开始。当一个模块编写完毕,就可以被其他的模块引用,不用重复造轮子
- 可区分性:使用模块还可以避免类名、函数名和变量名发生冲突。相同名字的类、函数和变量完全可以分别存在不同的模块中。但是也要注意尽量不要与内置函数名(类名)冲突
1.2 模块的导入
假设已经定义好一个模块module_a,它包含add1函数,则导入方法如下。
1.2.1 import 导入
语法 | 示例 | 函数调用 |
---|---|---|
import 模块1 [,模块2,...] | import module_a | module_a.add1() |
import ... as ... | import module_a as md | md.add1() |
1.2.2 from import 导入
语法 | 示例 | 函数调用 |
---|---|---|
from ... import 函数1 [,函数2,...] | from module_a improt add1 | add1() |
from ... import ... as ... | from module_a improt add1 as ad | ad() |
from ... import * | from numpy import * | add1() |
模块的导入,具体哪种方法更好没有统一规定,只要根据自己使用习惯,注意导入时别发生命名冲突即可。
2 程序入口
如C、C++等语言都有一个main函数作为程序的入口,main去调用函数库,函数库之间不能相互调用(如下图A和B之间),即程序的运行是从main函数开始。而python是脚本语言,没有统一入口,函数库之间可以互相调用。
所以,python代码执行有两种情况:
- 情况1:直接作为脚本执行,即直接运行该模块
- 情况2:先import到其他python模块中再调用执行(模块重用),其实就是「第三方库」。
而python通过if__name__ == 'main' : 语句,控制这两种不同情况下的代码执行。
2.1 模拟入口
基于python代码执行机理,可用if__name__ == 'main' : 语句模拟程序入口,实现对python代码执行的控制。
- 以脚本直接执行时,if__name__ == 'main': 后面语句会执行(该语句多为函数正确性验证语句)
- 被import到其他模块中执行时,if__name__ == 'main': 后面语句不会执行
# 直接作为脚本执行
def add1(x):
x = x+2
return x
add1(10)
# 模块重用执行
import os
os.chdir('D:\data\python_file')
from addx import add1
add1(9)
所以,想运行以脚本直接执行时才执行的命令时,可以将这些命令语句放在if__name__ == 'main': 判断语句之后:
# 自定义一个函数add1
def add1(a):
a=a+1
return a
print(__name__)
if __name__ == "__main__": # 脚本直接执行时,运行后面的语句;被import执行时,不运行后面的语句
print(add1(2)) # 函数正确性验证和测试
3 库
库是具有相关功能包(模块)的集合。分为标准库、第三方库以及自定义模块。下面着重介绍python第三方库的安装
3.1 pip安装
在安装好Anconda后,打开Anconda Prompt,用以下指令就可以进行安装、卸载、查看等操作。
语法 | 描述 |
---|---|
pip install … | 安装 |
pip uninstall … | 卸载 |
pip download … | 下载 |
pip list | 查看安装列表 |
3.2 文件安装
若遇到pip安装失败,可考虑使用文件安装,具体操作步骤如下:
-
打开网页,找到正确的待安装库(注意windows位数和库版本号)
-
左击文件下载待安装库
-
管理员身份运行Anaconda Prompt,输入pip install 安装库文件的路径 + 安装库的名称,最后回车运行。如:C:UsersAdministratorakima-2019.1.1-cp34-cp34m-win32.whl
文件下载地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/ ,网站包含很多Windows环境下可直接安装的第三方库文件。如:akima-2019.1.1-cp34-cp34m-win32.whl,akima是库名称;2019.1.1是库版本号;cp34指python版本号
3.3 自定义安装
安装第三方库提供的安装方式和步骤进行,优先级最低。
安装好后,在python的代码或交互环境里导入相应库,如import numpy,看看有无报错即可判断是否安装成功。