Python学习笔记 模块和包

模块(module)是包含一些函数以及为了程序添加特定功能而编写的一些文件。一个包可能包含多个模块
。通常一个包中的模块都有一个共同的主题,简单地讲,Python包就是一个目录,Python模块就是这个目录中的一个文件。

一、Python包

Python拥有不计其数的包,在自行编写一个包之前,应该要先检查一下标准类库,看看需要的包是否已经存在。Python自带有标准类库,所以不需要再安装任何东西。在使用的时候,可以用import命令告诉Python。使用import命令有两种方法:导入整个模块或者选择想要导入的模块。例如:

1
2
3
4
import module   
from module import class
from module import function
from module import *

其中 from module import * 会导入module中所有的内容,它会省去一些输入,但可能使代码难以调试。建议只导入所需要的具体的类或函数,或使import module导入整个模块。目前Python中用得比较多的包有:
random——用来生成随机数的一组模块;
os——专用于与操作系统交互的一个包;
json——用来生成和读取JavaScript Object Notation(JSON)文件的一个包,提供方法实现存储和共享数据;
sqlite3——用来创建、编辑和读取SQLite数据库的一个包;
datatime——用来操作日期和时间的一个包,包括获取日期的相关信息,显示这些信息等;
getpass——用来获取用户敏感信息的一个包;
this——一个复活节彩蛋,当你键入import this时,输出Python的信息;
pprint——用来以更易于阅读的格式打印数据的一个包。

二、random模块

random模块主要是用来得到一个随机数。为了告诉Python,想要使用random,需要再Shell或文件开头中输入import random或from random import class/function命令导入需要的函数或类。
例:

1
2
3
from random import randint
for i in range(10):
randint(1,10)

其中,randint()函数给出了指定的两个数字间的一个随机值,数字范围包括上下边界。

1
2
3
4
5
6
7
8
frequency={}
for i in range(1000):
num=randint(1,10)
if frequency.has_key(num):
frequency[num]=frequency[num]+1
else:
frequency[num]=1
print(frequency)

上述代码能统计出1000次随机事件中,1-10每个数字出现的频率
如果导入模块时使用的是import random,调用randint()时,应使用random.randint(1,10).

除了randint()之外,ramdon模块中还有很多其他的函数,其中random()返回一个从0到1之间的随机浮点数,不包括0和1。

1
2
3
from random import random
for i in range(10):
print(random())

如果想要一个特定区间的浮点数,可以使用uniform()函数,它接受两个参数,返回这两个数字之间的一个浮点数。

1
2
3
from random import uniform
for i in range(10):
print(uniform(1,5))

choice()函数可以产生一个列表中的随机对象,它接受一个元组或列表,然后从中随机返回一个项。

1
2
3
from random import choice
names=['Hannah','Jacob','Jim','Katie','Wonderdog']
choice(names)

每次使用choice(name)都能得到一个随机项

三、datetime模块

time类:这个类用来创建和操作时间对象,time()不需要任何参数,但它可以接受4个整数。分别赋值给小时、分钟、秒和微秒。

1
2
3
4
5
6
7
from datetime import time
lunch=time(11,30)
lunch datetime.time(11,30)
print(lunch)
lunch.hour
lunch.minute
lunch.second

Python中认为可以比较时间大小,如果一个时间发生在一天晚些时候,那么我们认为哪个时间“大于”同一天早些时候的时间。

1
2
3
4
5
6
import datetime
breakfast=datetime.time(7,30)
lunch=datetime.time(11,30)
elevensies=datetime.time(11,30)
breakfast>lunch
elevensies==lunch

datetime对象:用来保存时间和日期。

1
2
3
4
import datetime
hm=datetime.datetime(year=2009,day=9,month=1)
jt=datetime.datetime(year=2001,day=14,month=4)
hm-jt

另外timedelta也可以用于日期和时间对象。

1
2
3
4
5
import datetime
payday=datetime.date(year=2011,day=31,month=5)
period=datetime.timedelta(days=30)
next_payday=payday+period
next_payday

四、更多的模块

Python的标准库中包含了大概300个模块。官方的Python文档包含了所有库的列表,包括已经被废弃的库等。浏览>http://docs.python.org/library. 可以看到一个可供使用库的完整列表。另一个资源就是Doug Hellmann编写的The Python Standard Library by Example一书,并提供了大量的代码。

1