本篇文章用于介绍Python中模块的含义以及一些常用模块
到底什么是模块(Model)
简单来说,模块就是一个以“.py”为后缀的文件,每一个模块在python中都会被看作成一个独立的文件,而且它们可以在其他的模块中、一些脚本中被引用,进而可以在其他程序中使用此模块里的函数等功能。
大概的意思就是你去邻居家(其他模块)借了个锤子(模块中的方法)来敲木板(完成自己的代码)。
模块一般有下面这几类
- 系统内置的模块:例如 time、sys、os 以及前面遇见过的 math等。
- 自定义模块:就是自己写的模块,写入一些函数,并将其封装后供给其他文件调用。
- 第三方的开源模块:有专门的官方更新维护并发布到网络上,可以通过各种手段下载并使用,有开源的代码。
import语句
当我们想要在我们自己的程序中使用一个模块时,可以使用 import 语句,在这里使用 time 模块举例:
import time
通过这条语句,你就可以把 math 模块导入到你的程序中,并可以使用 math 模块中的一些函数或者方法。
dir(time)
['_STRUCT_TM_ITEMS',
'__doc__',
'__loader__',
'__name__',
'__package__',
'__spec__',
'altzone',
'asctime',
'clock',
'ctime',
'daylight',
'get_clock_info',
'gmtime',
'localtime',
'mktime',
'monotonic',
'monotonic_ns',
'perf_counter',
'perf_counter_ns',
'process_time',
'process_time_ns',
'sleep',
'strftime',
'strptime',
'struct_time',
'thread_time',
'thread_time_ns',
'time',
'time_ns',
'timezone',
'tzname']
你可以使用 dir(模块名)来查看模块中的所有方法。
注意:不管你执行了多少次 import,一个模块只会被导入一次。因为这样可以防止导入的模块被一遍又一遍的执行。
from...import语句
from...import语句允许你从一个模块中导入一个指定的方法到导当前的程序中,还是用 math 模块举例,已知 math 模块中有 sin() 和 cos() 两个方法。假设我们现在只需要用 sin() 方法而不需要 cos() 方法:
from math import sin #这行代码翻译过来就是“从math模块中导入sin方法”
a = 1
print(sin(a)) #成功运行,并得到结果
0.8414709848078965
print(cos(a)) #报错,提示‘cos’方法未定义,因为我们并未引入cos方法
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-5-3836cefab721> in <module>()
----> 1 print(cos(a)) #报错,提示‘cos’方法未定义,因为我们并未引入cos方法
NameError: name 'cos' is not defined
from math import cos
print(cos(a)) #成功运行
0.5403023058681398
from...import * 语句
把一个模块的所有内容全部都导入到当前的程序中,等于 import... 语句虽然我也理解为什么要有这么个语法,不过为了文章的完整性,我还是写下来了。
from math import *
一些常用的模块
关于时间——time模块
time 模块属于内嵌模块,它常常被用于计算时间差,当你想计算你的程序运行的时间时,time 模块就派上用场了。
import time #导入time模块
start = time.time() #使用time模块中的time方法,获得程序开始时间
num = 0
for i in range(10000): # 计算从1加到10000所需的时间
num = num + 1
end = time.time() #获得程序结束时间
spend = end - start #计算时间差,得出的结果即为程序运行时间
print("你的程序执行了{}秒".format(spend))
你的程序执行了0.0010061264038085938秒
另外,当你想让你的程序暂停的时候,你可以使用time模块中的sleep()方法,它有一个参数,即暂停时间长度,以秒为单位
import time
start2 = time.time()
time.sleep(1)
end2 = time.time()
spend2 = end2 - start2
print("你的程序执行了{}秒".format(spend2))
你的程序执行了1.0003342628479004秒
关于数学运算——math模块
在写程序的时候常常会用到一些数学公式,比如说计算圆的面积
$$S = ΠR^2$$
这个Π要怎么算呢,我们都知道圆周率不仅仅是 3.14,3.14只是一个近似的值,我们只是为了方便而默认它为 3.14,但是math模块中提供了pi()这一方法,它会返回一个小数点后 n 位的圆周率,肯定是比我们的3.14要精确得多。
import math
R = 2.0
S = math.pi * R**2
print(S)
12.566370614359172
math 中还有很多其他常用的数学方法,比如说 sin、 cos、 tan 三角函数,还有 abs、 pow,求绝对值,求平方等等。
小结
因为 python 完全开源的并且简单易上手的特性,使得这门语言吸引了大量的开发者和程序员,每个人都贡献了自己的一份力量,写出了一个又一个强大的模块,从而使得这门语言愈发强大。python中有各种各样的模块,没有你做不到,只有你想不到。