Day5 - Python基础5 常用模块学习
模块介绍
1.定义:
模块:用来从逻辑上组织python代码(变量、函数、类、逻辑:实现一个功能),本质就是*.py结尾的python文件(文件名:test.py,对应的模块名:test)
包:用来从逻辑上组织模块,本质就是一个目录(必须带一个__init__.py的文件)
2.导入方法
import module1_name,module2_name
from module_name import *(慎用,可能会和main中其它模块冲突)
from module_name import function1_name,function1_name(导入多个方法)
from module_name import function_name as new_ function_name(as可以在导入时给模块起别名,避免和其它模块名冲突)
3.import本质(路径搜索和搜索路径)
导入模块的本质就是把python文件解释一遍
导入包的本质就是执行包下面的__init__.py文件,所以要在__init__.py文件把包下面的模块import
1 #-*- coding:utf-8 -*- 2 from . import test1 #.指从当前路径,导入test1模块
import module_name--->module_name.py---->module_name.py的路径---->sys.path
from module import function_name-->使用时可以直接调用function_name
import module---->相当于把module下面的代码赋值给了module,调用时要module.function_name方式
模块路径获取方法(搜索sys.path中的目录):
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #-*- coding:utf-8 -*- 2 import sys,os 3 x=os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 4 print(x) 5 #os.path.abspath(__file__)获取当前文件绝对路径 6 #os.path.dirname()获取文件当前目录 7 sys.path.append(x) #将路径加入python搜索路径
4.导入优化
当前路径导入优化
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #-*- coding:utf-8 -*- 2 #每次调用都要搜索module_test路径 3 import module_test 4 def logger(): 5 module_test.test() 6 print('in the logger') 7 8 def search(): 9 module_test.test() 10 print('in the search') 11 12 #不用每次搜索module_test路径,代码更优化 13 from module_test import test 14 def logger(): 15 test() 16 print('in the logger') 17 18 def search(): 19 test() 20 print('in the search')
5.模块的分类
a.标准库
b.开源模块
c.自定义模块
time &datetime模块
time模块
定义:
时间戳timestamp-以1970/1/1 0时间为准,往后的以秒为单位的时间偏移量
格式化时间format string-以特定格式输出的时间,如2018/5/1 02:00:00
结构化时间stuct-time-元组形式返回的时间,有9个元素(年月日时分秒、第几周、一年第几天、夏令时)
3种格式的转换关系:
datetime模块
# print(datetime.datetime.now() + datetime.timedelta(3)) #当前时间+3天 # print(datetime.datetime.now() + datetime.timedelta(-3)) #当前时间-3天 # print(datetime.datetime.now() + datetime.timedelta(hours=3)) #当前时间+3小时 # print(datetime.datetime.now() + datetime.timedelta(minutes=30)) #当前时间+30分
random
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #0和1之间的小数 2 >>> random.random() 3 0.6736917079809672 4 5 #1=< <=3 6 >>> random.randint(1,3) 7 3 8 9 #1=< <3 10 >>> random.randrange(1,3) 11 2 12 13 #1或23或5 14 >>> random.choice([1,'23',[5]]) 15 [5] 16 17 #随机取列表中2个 18 >>> random.sample([1,'23',[5]],2) 19 [[5], 1] 20 21 #1和3之间的小数 22 >>> random.uniform(1,3) 23 1.8304702567160465 24 25 #洗牌 26 >>> item = [1,2,3,4] 27 >>> random.shuffle(item) 28 >>> item 29 [3, 4, 1, 2]
os
OS是和操作系统交互的接口,常用于系统文件、文件夹、路径等相关操作
sys
sys.argv-从外部获取参数的桥梁,获取的参数以list方式存储
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 import sys 2 3 a=sys.argv 4 print(a) 5 6 c:>test.py what is this 7 ['C:\test.py', 'what', 'is', 'this']
shutil
高级的文件、文件夹和压缩处理模块
json & picle
eval-内置函数,可以把字符串变成python执行对象
序列化:把内存中对象(变量)变成可存储和传输的过程
好处:1.持久保存,如挂机状态就是序列表的应用;2.跨平台交互数据
shelve
序列化模块
xml处理
实现不同语言和程序之间交换数据的协议,没有json方便,以前使用,不过有些金融单位还在使用
yaml处理
configparser
标准配置文件配置模块,格式和windown ini文件一样
hashlib
hash模块
subprocess
logging模块
日志模块
re正则表达式