Python中的模块
2018-01-10 18:53:58 49 举报
AI智能生成
Python中的模块
作者其他创作
大纲/内容
模块
time 时间模块
常用方法
1、time.sleep(secs)(线程)推迟指定的时间运行。单位为秒。
2、time.time()获取当前时间戳
表示时间的三种方式
时间戳(timestamp)
通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型。
元组(struct_time)
struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天等)
http://www.cnblogs.com/DI-DIAO/p/8258732.html
格式化的时间字符串(Format String)
小结:时间戳是计算机能够识别的时间;时间字符串是人能够看懂的时间;元组则是用来操作时间的
hashlib模块
摘要算法
摘要算法就是通过摘要函数f()对任意长度的数据data计算出固定长度的摘要digest,目的是为了发现原始数据是否被人篡改过。(摘要函数是一个单向函数)
应用
加盐
动态加盐:把登录名作为Salt的一部分来计算MD5
configparser模块
适用于配置文件的格式与windows ini文件类似,可以包含一个或多个节(section),每个节可以有多个参数(键=值)。
用于处理特定格式的文件,其本质上是利用open来操作文件。
详见博客
random 随机数模块
random.random()
生成一个0到1的随机符点数: 0 <= n < 1.0
用于生成一个指定范围内的随机符点数,两个参数其中一个是上限,一个是下限。
生成一个指定范围内的整数。其中参数a是下限,参数b是上限。
从指定范围内,按指定基数递增的集合中 获取一个随机数,是整数。
random.choice(sequence)
用于将一个列表中的元素打乱
从指定序列中随机获取指定长度的片断。sample函数不会修改原有序列。
sys模块
span style=\
什么是模块
一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀。
import加载的模块分为四个通用类别
1 使用python编写的代码(.py文件)
2 已被编译为共享库或DLL的C或C++扩展
3 包好一组模块的包
4 使用C编写并链接到python解释器的内置模块
为何要使用模块?
模块的使用
具体步骤详见博客
首次导入模块my_module时会做三件事
为模块名起别名,相当于m1=1;m2=m1
示范用法一:有两中sql模块mysql和oracle,根据用户的输入,选择不同的sql功能
示范用法二: 为已经导入的模块起别名的方式对编写可扩展的代码很有用,假设有两个模块xmlreader.py和csvreader.py,它们都定义了函数read_data(filename):用来从文件中读取一些数据,但采用不同的输入格式。可以编写代码来选择性地挑选读取模块,例如
在一行导入多个模块
from ... import...
对比import my_module,会将源文件的名称空间'my_module'带到当前名称空间中,使用时必须是my_module.名字的方式而from 语句相当于import,也会创建新的名称空间,但是将my_module中的名字直接导入到当前的名称空间中,在当前名称空间中,直接使用名字就可以了、span style=\
如果当前有重名read1或者read2,那么会有覆盖效果。
需要特别强调的一点是:python中的变量赋值不是一种存储操作,而只是一种绑定关系,如下:
也支持as
也支持导入多行
from my_module import * 把my_module中所有的不是以下划线(_)开头的名字都导入到当前位置,大部分情况下我们的python程序不应该使用这种导入方式,因为*你不知道你导入什么名字,很有可能会覆盖掉你之前已经定义的名字。而且可读性极其的差,在交互式环境中导入时没有问题。
模块搜索路径
模块的查找顺序是:内存中已经加载的模块->内置模块->sys.path路径中包含的模块
特别注意的是:我们自定义的模块名不应该与系统内置模块重名。
dir()函数
内建函数dir是用来查找模块中定义的名字,返回一个有序字符串列表
re模块
正则表达式
正则表达式,又称规则表达式,英文名为Regular Expression,在代码中常简写为regex、regexp或RE,是计算机科学的一个概念。正则表通常被用来检索、替换那些符合某个模式(规则)的文本。首先,正则只和字符串有关。在线测试工具 http://tool.chinaz.com/regex/
给定一个正则表达式和另一个字符串,我们可以达到如下的目的
1. 给定的字符串是否符合正则表达式的过滤逻辑(称作\"匹配\");
2. 可以通过正则表达式,从字符串中获取我们想要的特定部分。
正则表达式的特点
1. 灵活性、逻辑性和功能性非常强;
2. 可以迅速地用极简单的方式达到字符串的复杂控制。
具体符号解析
http://www.cnblogs.com/DI-DIAO/p/8251612.html
在Python中正则表达式的实现形式
调用模块指令
常用关键字汇总
findall
re.findall遍历匹配,可以获取字符串中所有匹配的字符串,返回一个列表。
格式:re.findall(‘前面放要查找的内容’,‘这里放被查找的内容’)
search
格式:re.search(‘前面放要查找的内容’,‘这里放被查找的内容’)
match
决定RE是否在字符串刚开始的位置匹配。//注:这个方法并不是完全匹配。当pattern结束时若string还有剩余字符,仍然视为成功。想要完全匹配,可以在表达式末尾加上边界匹配符'$'。span style=\
只会从开头匹配,如果不是开头的字符串,那么将不会匹配成功。将正则表达式编译成为一个 正则表达式对象。
re.span style=\
subn
返回替换次数。
注意事项
1、re.match与re.search与re.findall的区别
re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配;findall是匹配整个字符串,匹配所有符合条件的。
2、贪婪匹配与非贪婪匹配
logging模块
日志模块
典型的日志记录的步骤是这样的:
1、创建logger
2、创建handler
3、定义formatter
4、给handler添加formatter
5、给logger添加handler
collections模块
namedtuple
生成可以使用名字来访问元素内容的tuple
deque
双端队列,可以快速的从另外一侧追加和推出对象
Counter
计数器,主要用来计数
OrderedDict
有序字典
defaultdict
带有默认值的字典
os模块
os模块是与操作系统交互的一个接口
序列化模块
将原本的字典、列表等内容转换成一个字符串的过程就叫做序列化。
序列化的目的
以某种存储形式使自定义对象持久化
将对象从一个地方传递到另一个地方
使程序更具维护性
具体应用
json模块
通用的序列化格式,只有很少的一部分数据类型能够通过json转化成字符串(数字 字符串 列表 字典 元组)
包含四个模块
dumps
dump
接收一个文件句柄,直接将字典转换成json字符串写入文件
loads
load
接收一个文件句柄,直接将文件中的json字符串转换成数据结构返回
json也有格式化功能
pickle模块
所有的python中的数据类型都可以转化成字符串形式, pickle序列化的内容只有python能理解,且部分反序列化依赖python代码
用法和 json 一样
dump(序列化,存)
loads(反序列化,读)
load (不仅可以序列化字典,列表...可以把Python中的任意数据类型序列化)
shelve模块
Python3系列新增模块。序列化句柄,使用句柄直接操作,非常方便
shelve也是python提供给我们的序列化工具,比pickle用起来更简单一些。shelve只提供给我们一个open方法,是用key来访问的,使用起来和字典类似。
包
包是一种通过使用‘.模块名’来组织python模块名称空间的方式。
import
from.....import...
__init__.py文件
绝对导入和相对导入
绝对导入
指跳过包内,直接搜索 sys.path ,在sys.path的基础上进行我们的模块搜索
一个模块只能导入自身的子模块或和它的顶层模块同级别的模块及其子模块
相对导入
指先包内,再包外
一个模块必须有包结构且只能导入它的顶层模块内部的模块
相对与绝对仅针对包内导入而言
0 条评论
回复 删除
下一页