Python学习笔记

模块

模块就是一系列功能的集合体

分为三大类;
	1.内置模块
	2.第三方模块
	3.自定义模块

内置与第三方模块

无需定义,这种拿来主义,可以极大地提升自己的开发效率

自定义模块:

可以将程序的各部分功能提取出来放到一模块中为大家共享使用

首次导入模块:

执行mod.py
产生mod.py的名称空间,将mod运行过程产生的名字都丢到mod的名字空间中
在当前文件中产生一个名字mod,该名字指向当前文件中所产生的名称空间

引用:

模块名.名字,是指名道姓地问某一个模块要名字对应的值,不会与当前的名字发生冲突
无论是查看还是修改操作的都是以原模块为基准的,与调用位置无关

导入模块的规范:

可以以逗号为分割符在一行导入多个模块,但是不建议
    1.Python内置模块
    2.第三方模块
    3.程序员自定义模块

包:

包的本质是模块的一种形式,包是用来被当做模块导入
    1.产生一个名称空间
    2.运行包下的__init__.py文件,将运行过程中产生的名字都丢到当前执行文件的名称空间中
    3.在当前执行文件的名称空间中拿到一个名字(包的文件夹名字),指向当前执行文件的名称空间

绝对导入:

from foo,m1 import f1

相对导入:仅限于包内使用,不能跨出包(包内的模块之间的导入,推荐使用相对导入)

.:代表当前文件夹
...代表上一个文件夹
    from .m1 import f1
    from ... import f1

强调:

相对导入不能跨出包,仅限于包内模板彼此之间的导入,而绝对导入没有限制

os模块:

os.getcwd()  # 获取当前脚本工作的目录路径
os.chdir('')  # 更改当前脚本工作目录,相当于shell下cd
os.curdir  # 返回当前目录
os.pardir  # 获取当前目录的父目录字符串名
os.listdir('.')  # 获取某一文件夹下所有的子文件以及子文件夹的名字

os.path.getsize()  # 获取文件大小
os.rename()  # 重命名文件
os.remove()  # 删除一个文件

os.name  # 返回操作平台系统
os.system(r"dir ")	# 执行系统命令
os.environ['xxx']='xxx'  # 环境变量值

print(__file__)
print(os.path.abspath(__file__))  # 返回一个绝对路径
os.path.split(r'')  # 切分路径

os.path.dirname()	# 获取父文件假的绝对路径
os.path.basename()	# 获取当前执行文件的文件名

os.path.isabs(r'')  # 判定是否为绝对路径

os.path.isfile()  # 判断是否是文件
os.path.isdir()  # 判断是否是文件夹

print(os.path.join('a', 'C:', 'v', 'f'))	#路径拼接

os.path.normcase()	# 在Linux和Mac平台上,该函数会原样返回path,在windows平台上会将路径中所有字符转换为小写,并将所有斜杠转换为反斜杠
os.path.normpath()	#规范化路径,如..和/

random模块:随机生成数

print(random.random())  # float 大于0且小于1之间的小数
print(random.randint(1, 3))  # [1,3] 大于等于1且小于等于3之间的整数
print(random.randrange(1, 3))  # [1,3] 大于等于1且小于3之间的整数
print(random.choice([1, 3, '654', [65, 8]]))  # 列表里随机取出
print(random.sample([1, 3, '654', [56, 89], 8],2))  # 列表元素任意2个组合成列表
print(random.uniform(1, 3,))  # 大于1小于三的小数
random.shuffle()	#随机打乱顺序

time模块:

1.时间戳:从1970年到现在经过的秒数
    作用:用于时间间隔计算
    time.time
2.按照某种格式显示的时间:2020-5-29 11:11:11
    作用:用于展示时间
    time.strftime('%Y-%m-%d %H:%M:%S %p')
    time.strftime('%Y-%m-%d %X')
3.结构化时间
    作用:用于获取当前时间的某一部分
    res=time.localtime()
    res.tm_year

datetime:
格式化时间的加减处理

时间格式转换:

结构化时间->时间戳
	time.mktime(time.localtime())

时间戳->结构化时间
	time.localtime(time.time())

结构化是时间->格式化时间
	time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())

格式化时间->结构化时间
	time.strptime('2020-05-29 11:11:11', '%Y-%m-%d %H:%M:%S')

hashlib模块:

hash是一类算法,该算法接受传入的内容,经过运算得到一串hash值

    hash值的特点:
        1.只要传入的内容相同,得到的hash值必然一样
        2.不能由hash值反解成内容
        3.只要使用的hash算法不变,无论校验的内容有多大,得到的hash值的长度是固定的
    用途:
        特点2用于密码密文传输与验证加密
        特点1.3用于文件完整行校验

	提升撞库成本===>密码加盐

json模块:

序列化:
指的是把的数据类型转换成一种特定格式的内容
该格式的内容可用于存储或者传输给其他平台使用
内存中的数据类型------->序列化------->特定的格式(json格式或pockle)
内存中的数据类型<------反序列化<-------特定的格式(json格式或pockle)

序列化
res=json.dumps(True)
print(res,type(res))

反序列化
res2=json.loads(res1)
print(res2,type(res2))

re模块:正则表达式

re.findall('\w', 'abc123_8946ew-*/5')  # 字母数字下划线
re.findall('\W', 'abc123_8946ew-*/5')  # 非字母数字下划线
re.findall('\s', 'abc123_8946ew-*/5')  # 空白字符
re.findall('\s', 'abc123_8946\t\n e\fw-*/5')  # 空白字符
re.findall('\S', 'abc123_8946\t\n e\fw-*/5')  # 非空字符
re.findall('\d', 'abc123_8946\t\n e\fw-*/5')  # 数字
re.findall('\D', 'abc123_8946\t\n e\fw-*/5')  # 非数字
re.findall('\Aabc', 'abc123_8946\t\n e\fw-*/5')  # 匹配开头
re.findall('/5\Z', 'abc123_8946\t\n e\fw-*/5')  # 匹配结尾
re.findall('^abc', 'abc123_8946\t\n e\fw-*/5')  # 匹配开头
re.findall('/5$', 'abc123_8946\t\n e\fw-*/5')  # 匹配结尾
re.findall('^/15$', '/15')  # 匹配全部

re.findall('a.c', 'abc123_8946 \t\n e\fw-*/5')  # 匹配除了\n的任意一个字符
re.findall('a.c', 'abc123_8946 \t\n e\fw-*/5', re.DOTALL)  # 匹配任意一个字符
re.findall('ab*', 'abc123_89a6 \t\n abbe\fw-*/5')  # 左侧字符重复0次或无穷次
re.findall('ab+', 'abc123_89a6 \t\n abbe\fw-*/5')  # 左侧字符重复1次或无穷次
re.findall('ab?', 'abc123_89a6 \t\n abbe\fw-*/5', )  # 左侧字符重复0次或1次

re.findall('ab{1,2}', 'abc123_89a6 \t\n abbe\fw-*/5')  # 左侧字符重复n次到m次
# {0,}=> *
# {1,}=> +
# {0,1}=> ?
re.findall('\d+\.?\d*', 'abc123_8.9a6 \t\n abbe\fw-*/5')

re.findall('a.b', 'abc123_8.9a6 \t\n abbe\fw-*/5', re.S)  # []匹配指定字符的一个
re.findall('a\db', 'abca1bv23_8.9a6 \t\n abbe\fw-*/5', re.S)  # []匹配指定字符的一个
re.findall('a[12345]b', 'abca1bv23_8.9a6 \t\n abbe\fw-*/5', re.S)  # []匹配指定字符的一个
re.findall('a[0-9a-zA-Z]b', 'abca1bv23_8.9a6 \t\n abbe\fw-*/5', re.S)  # []匹配指定字符的一个
re.findall('a[^0-9a-zA-Z]b', 'a bca1bv23_8.9a6 \t\n abbe\fw-*/5', re.S)  # []匹配指定取反字符的一个
posted @ 2020-07-29 15:20  None_c  阅读(103)  评论(0)    收藏  举报