本节目录
-
模块相关介绍
-
time
-
random
-
os
-
sys
-
json & pickle
-
shelve
-
xml
-
configparser
-
hashlib
-
subprocess
-
optparse
-
struct
-
所述一些模块方法并不完善,只是简单性的学习,或有错误,敬请指正
-
未完待续......
为什么要有模块:
在计算机程序的开发过程中,程序代码越写越多,在一个py文件中会越来越多,变得不容易维护
为了编写易维护的代码,将很多函数分组,分别放入不同的py文件中,每个文件包含的代码就会相对减少,诸多编程语言都这样做
在python中,一个.py文件中就可以称之为一个模块(moudle)
使用模块有什么好处:大大提高了代码的可维护性,也可区分逻辑
其次,在编写好一个模块,就可以在其它地方进行引用,不必从0开始
模块有三种:
- python标准库
- 第三方模块
- 应用程序自定义模块
模块的引用方式:
1、import语句 1)执行对应文件 2)引入变量名
import time # 导入时间模块 也可以同时导入多个模块,用逗号隔开
2、from....import 模块名
from my_moudle import main
3、from....import *
引入一切,即导入模块中所有的项目,不推荐使用。因为引入的其它来源的命名,很可能覆盖了已有的定义。
4、运行本质
#1 import test
#2 from test import add
那么,python中是如何找到这些模块呢?
sys.path,存放的是执行文件的搜索路径(环境变量)。然而模块就是通过环境变量去找的.
一个目录中带__iter__.py的文件成为包(package)
1、用来组织模块 2、避免相同模块名的冲突
注意,每一个包目录下面都会有一个__init__.py的文件,这个文件是必须存在的,否则,Python就把这个目录当成普通目录(文件夹),而不是一个包。__init__.py可以是空文件,也可以有Python代码,因为__init__.py本身就是一个模块,而它的模块名就是对应包的名字。
这里介绍一下__name__的属性
一个模块被另一个程序第一次引入时,其主程序将运行。如果我们想在模块被引入时,模块中的某一程序块不执行,我们可以用__name__属性来使该程序块仅在该模块自身运行时执行。
if __name__ == '__main__':
print('程序自身在运行')
else:
print('我来自另一模块')
python using_name.py
程序自身在运行
import using_name
我来自另一模块
说明: 每个模块都有一个__name__属性,当其值是'__main__'时,表明该模块自身在运行,否则是被引入。
time
时间相关的操作,时间有三种表示方式:
时间戳 1970年1月1日之后的秒,即:time.time(),只有时间戳参数才能进行加减
格式化的字符串 2014-11-11 11:11, 即:time.strftime('%Y-%m-%d')
结构化时间 元组包含了:年、日、星期等... time.struct_time 即:time.localtime()
print time.time()
print time.mktime(time.localtime())
print time.gmtime() #可加时间戳参数
print time.localtime() #可加时间戳参数
print time.strptime('2014-11-11', '%Y-%m-%d')
print time.strftime('%Y-%m-%d') #默认当前时间
print time.strftime('%Y-%m-%d',time.localtime()) #默认当前时间
print time.asctime()
print time.asctime(time.localtime())
print time.ctime(time.time())
import datetime
'''
datetime.date:表示日期的类。常用的属性有year, month, day
datetime.time:表示时间的类。常用的属性有hour, minute, second, microsecond
datetime.datetime:表示日期时间
datetime.timedelta:表示时间间隔,即两个时间点之间的长度
timedelta([days[, seconds[, microseconds[, milliseconds[, minutes[, hours[, weeks]]]]]]])
strftime("%Y-%m-%d")
'''
import datetime
print datetime.datetime.now()
print datetime.datetime.now() - datetime.timedelta(days=5)
random(随机模块)
import random print(random.random()) # 0到1的随机浮点数 print(random.randint(1,3)) # 整形 闭区间 [1,3] print(random.randrange(1,3)) # 整形,开区间 [1,3) li = [11,22,33,44,55] print(random.choice(li)) # 基于可迭代对象随机 print(random.sample(li,2)) # 随机选定多个 print(random.uniform(1,2)) # 任意范围的浮点型 random.shuffle(li) # 随机打乱次序 print(li)
通过随机模块可以制作一个随机验证码
1 def v_code(): 2 checkcode = "" # 定义一个空字符串 3 for i in range(4): # 遍历四次 4 num = random.randint(0,9) # 随机选择0到9的整形 5 alf = chr(random.randint(65,90)) # 随机选择chr对应的字母 6 add = random.choice([num,alf]) # 基于上面的可迭代对象选择一个 7 checkcode += str(add) # 将它们变为字符串,加到空字符串里面 8 return checkcode 9 if __name__ == "__main__": 10 print(v_code())