内容概要
模块:
time
os
random
logging
hashlib
json
回顾详细
具有一定功能的代码的集合
可以是一个py文件(模块)
也可以是一个文件夹里面有很多py文件(包)
import ... (直接调用整体导入)
from ... import ... (知名道姓导入局部,但更常用于跨越文件夹调用,from相当于一个引线)
# 起别名
as 别名
第一次导入模块会执行模块内代码产生一个该代码的名称空间
并在导入该模块的文件中产生一个aaa的名字指向模块的名称空间
主要用于操作系统上的操作
impot os
os.mkdir(r'文件夹名字') # 创建单级文件夹
os.makedirs(r'文件夹1\文件夹2') # 可以创建多级(单极当然也行
os.rmdir(r'文件夹名字') # 默认只能删除一级目录
os.removedirs(r'文件夹1\文件夹2') # 可以删除多级目录
os.listdir('路径\\') # 查看指定路径下所有的文件及文件夹
os.getcwd() # 查看当前所在路径
os.chdir(r'路径') # 切换当前路径
os.path.isdir(r'文件所在路径') # 判断是否是文件夹
os.path.isfile(r'文件所在路径') # 判断是否是文件
os.path.exists(r'') # 判断当前路径是否存在
'''不同的操作系统路径之间分隔符是不一样的'''
os.path.join() # 可以针对不同操作系统完成路径拼接
os.path.getsize(r'') # 数字节数
随机数模块 重点:搜狗笔试题
import random
def get_rdmcode(figure): # 11.形参就可以设置一个想要几位随机验证码的数字 figure位数
random_code = '' # 8.2先把他定义成一个空的字符串之后让for循环里加给他
# 1.首先第一步每个值一定是要一个个取出的,那说道循环取出就先for写上
for i in range(figure):
# 2.每次都要从数字,小写英文字母,大写英文字母三个中先随机 那要把这三个的变量名定义出来
num = str(random.randint(0, 9)) # 3.数字定义的时候顺便加上也要随机取 7.转字符串
ngh_upper = chr(random.randint(65, 90)) # 4.去字母可以用ascii码随机拿对应的数字然后转成字母
ngh_lower = chr(random.randint(97, 122)) # 5.与上一步同理
co = random.choice([num, ngh_upper, ngh_lower]) # 6.对应第二步从三个里面选一个 注意这边用choice比较好,choices取出来的值是列表形式
# 这个时候取出来的是一个个的单个元素,所以就要去拼接,返回3去把数字统一换成字符串
# 8.1拼接完成的结果不应该被循环取用所以要在for循环外面定义出来
random_code += co # 9.每次循环取值到的co随机字符加给原来的random_code
# print(random_code) # 10.输出检验没问题要优化封装成函数版
return random_code # for取值完毕返回值所以这边return和for平齐 把结果返回
# 用的时候实参给位数 给个整型就可以
print(get_rdmcode(5))
无需掌握 了解即可
加密模块
将明文采用一定的算法变成密文
序列化模块
序列化
将其他数据类型转化成json格式的字符串(有双引号象征)
反序列化
将json格式字符串转化成对应语言中的对应数据类型
今日内容概要
h函数封装产生任意指定位数随机验证码
- python基础知识复习
- 注册登录作业讲解
- 面向对象(了解基本概念即可)
今日内容详细
课堂练习自做版
import random
def ran_code(figure):
# 先要循环几次取值
code = ''
for i in range(figure): # 这边给的位数加到形参里面封装
num = str(random.randint(0, 9))
eng_up = chr(random.randint(65, 90))
eng_low = chr(random.randint(95, 122))
code_pick = random.choice([num, eng_up, eng_low]) # 随机去这三个中取一位
code += code_pick
# print(code) # 这里变return
return code
print(ran_code(int(input('请输入验证码位数>>>:')))) # 加了个整型再引导输入
总复习
python工具
解释器 :一般分2.X 和 3.X 但是一般不用最新版
2.x推荐用2.7 有些老公司老项目可能会用
3.x推荐3.6最稳定
编辑器:
pycharm
变量与常量
name = 'leo'
变量内部的本质是在内存中形成了一个名称空间专门存放了leo然后由name指向他
# 变量名的命名规范
1.只能是数字、字母、下划线
2.数字不能开头 下划线尽量不用(面向对象有特殊含义)
3.变量名不能与关键字(本身就具有一定功能)冲突
4.变量名一定要"见名知意"
# 变量名的命名风格
python中我记好下划线式就行了单词与单词之间下划线隔开
基本数据类型
整型 int
就是整数
浮点型 float
就是小数
字符串 str
由引号引起来的描述性的信息
布尔值 bool
表示对错的 只有 True 和 False
列表 list
中括号括起来内部可以存放多个元素 元素与元素之间逗号隔开
列表中元素可以是任意数据类型 包括列表套列表 列表套字典等
字典 dict
大括号阔起来内部可以存放多个元素 元素是K:V键值对的形式
元素与元素逗号隔开
K是对v的描述性性质的信息 一般都是字符串
v是任意数据类型
d = {'username':'leo','pwd':123}
元组 tuple
小括号括起来内部可以存放多个元素 元素与元素之间逗号隔开
元素可以是任意数据类型 元组相当于不可变的列表
l = (11,22,33,44,55)
"""
元组内元素不可修改 要注意内部到底是什么不可修改
l = (1,2,[11,22])
l[0] = 111 报错
l[2].append(33) 正确 (1,2,[11,22,33])
"""
集合 set
括号阔起来内部可以存放多个元素 元素与元素逗号隔开
元素只能是不可变类型(数字 字符串)
s = {1,2,3,4,5}
一般用于去重和关系运算
"""
当涉及到判断的时候所有数据类型都会自动转成布尔值进行判断
布尔值为False的数据类型
0 None '' [] {}
"""
流程控制
在python中使用缩进来表示代码的从属关系
并不是所有的代码都可以拥有子代码的权限
同属于一个关键字的多行子代码必须要保持相同缩进
缩进一般采用四个空格(windows里tab是四个空格)
# 小技巧:只要有冒号的下一行必定缩进
if判断
if 条件1:
条件1成立执行的子代码
elif 条件2:
条件2成立执行的子代码
else:
上述条件都成立执行的子代码
# if判断中结果只能走其中一个
while循环
while 条件:
条件成立执行子代码
# break结束本层循环 continue结束本次循环直接开始下一次循环
for循环
for 变量名 in 容器类型:
# break结束本层循环 continue结束本次循环直接开始下一次循环
# else循环没有被主动打断的情况下会执行
# range迭代器
数据类型内置方法
'''可以在pycharm中自动提示的方法查看具体的内置方法'''
整型
int()
浮点型
float()
字符串
len() 统计长度
strip() 移除字符串首尾指定的字符 默认移除空格
split() 切割
replace() 替换
upper() 转大写
islower() 判断是否是小写
format() 格式化输出
...
列表
len() 统计长度
count() 统计某个元素出现的次数
append() 尾部追加元素
insert() 按照索引指定的位置插入元素
extend() 扩展列表
pop() 弹出元素
remove() 移除元素
sort() 排序
...
字典
len() 统计长度
get() 按照key取值 key不存在不报错 返回默认None
d[key] 按照key取值 key不存在会报错
d[key] = value key存在则修改 不存在则添加
pop() 弹出键值对 拿到值
字符编码
针对文本文件才有的概念
记录人类的字符与数字的对应关系
计算机内部只认识二进制数字
ASCII码
1bytes表示英文
GBK码
2bytes表示中文 1bytes表示英文 更多文字需要更多的字节
unicode码
中文英文统一采用2bytes表示
utf8码
1bytes表示英文 3bytes表示中文
"""
编码与解码
encode()
decode()
"""
文件处理
读写模式
r 只读
w 只写
a 只追加
操作模式
t 文本模式
默认的操作模式
1.只能操作文本文件
2.需要只读encoding参数
b 二进制模式
1.可以操作任意类型的文件
2.不需要指定encoding参数
函数
def 函数名(参数1,参数2):
'''函数注释'''
函数体代码
return 返回值
'''
函数就类似于是工具,必须先定义后使用
函数名(需要参数则传参数)
函数的返回值
return
1.返回值
2.结束函数的运行
'''
函数的参数
# 两大分类
形参
函数在定义阶段括号内写的变量名
实参
函数在调用阶段括号传入的数据(值)
两者在函数调用阶段临时绑定 结束后分开
多种类型
1.位置参数
按照位置顺序一一传值 不能多不能少
2.关键字参数
指名道姓的给形参传值
3.默认参数
函数在定义阶段就可以给形参赋值
后续调用不传默认使用定义阶段的值 传了则使用传了的
4.可变长参数
在函数定义阶段形参中使用*和**来接收调用阶段传入的多余
位置参数和关键字参数分别组织成元素和字典赋值给两个符号后面的变量名
"""
*和**在实参中也有一定的功能
*可以将列表内多个元素变成位置参数一一传入
**可以将字典内多个键值对变成关键字参数传入
"""