Python的模块是一系列功能的集合体,分为三种:
- 内置模块:Python解释器自带的模块;
- 第三方模块:Python内置的标准库之外的通用模块;
- 自定义模块:用户自己编写的,一个Python文件就可以看作是一个模块。
内置和第三方模块可以直接调用,极大提高了开发效率。
在大的工程项目中,会有多个程序文件,把常用的功能放到一个模块中供其他文件调用,可以减少代码冗余,程序组织结构更加清晰。
在《104. 列表的浅拷贝和深拷贝》中深拷贝使用了内置模块copy中的方法copy.deepcopy(),使用此方法前,需要导入模块,即import copy。
import是关键字,专门用于导入模块。
在使用模块中的方法时,往往要使用模块名加前缀,如果模块名比较长,为了简便,在导入模块的同时,可以给它取一个简单的别名,这需要另外用到关键字as,实例如下:
import matplotlib as plt
这样,调用模块中的方法时,前缀只需用plt。
plt.plot() # 调用matplotlib模块中的plot方法
如果只用到模块的一部分功能,也可以只导入模块的子模块或方法,如测试列表深拷贝的程序只用到了copy模块的deepcopy方法,可以使用下面的语句进行导入:
from copy import deepcopy
from也是关键字。之后使用deepcopy方法就不必加copy前缀了。
list3 = deepcopy(list1) # list3是list1的深拷贝结果
可见,对模块的导入有三种方式:
- import xxx
- import xxx as y
- from xxx import zzz
下面的例子,调用math模块,优化算法。
import math
x = int(input("请输入一个不小于2的整数:"))
isPrimeNumber = True
y = int(math.sqrt(x)) + 1 # 为提高效率,超过x的平方根的整数,没有必要进行检测。
for i in range(2, y):
if x % i == 0:
isPrimeNumber = False # 如果在2~x的平方根的范围内,x有被整除的情况,则x不是质数
break
if isPrimeNumber:
print(x, "是质数。")
else:
print(x, "不是质数。")
代码分析:上面的示例,通过使用math模块中的取平方根函数sqrt,提高了检测质数功能代码的效率。