python复习
今日内容
- 模块
- os模块
- random模块
- logging模块
- hashlib模块
- json模块
- 总复习
模块
# 具有一定功能的代码集合
模块主要为.py后缀的文件,改格式文件的集合即为包
# 导入模块的本质
执行模块内代码并产生一个模块的名称空间,之后将代码执行过程中的变量名或函数存放在该名称空间中 然后给导入模块的语句一个模块名,当时用模块的功能时,该模块指向模块的名称空间
模块的导入:
# 导入模块,可以使用该模块的所有功能
import 模块名
# 导入模块的功能,只可以该导入功能
form 模块名 import 功能名
# 导入相对路径,导入该路径下的模块名
form 路径 import 模块名
# 为了解决模块名字过长可以起别名,之后依旧可以使用 import 文件名 as 别名 form ... import 文件名 as 别名
'''
重复导入模块,只会执行一次该模块
涉及到复杂路径模块时,输入从根目录开始的文件路径
实在复杂可以改变环境变量
'''
OS模块
文件夹操作模块
#创建
os.mkdir()
os.makedirs()
#删除
os.rmdir()
os.removedirs()
#查找
os.listdir()
os.chdir()
os.getdir()
#判断
os.path.isfile()
os.path.isdir()
os.path.exists()
#文件大小
os.path.getsize()
#路径拼接
os.path.join()
random模块
# 随机数
random.randint()
# 随机选择
random.choice([''])
# 随机抽样
random.sample()
#随机打乱
random.shuffle()
logging模块
日志级别
logging.debug() # 调试
logging.info() # 通知
logging.warning() # 警告
logging.error() # 出错
logging.critical() # 严重事故 等级最高
级别大小(从左到右,由大到小):
debug < info < warming < error < critical
hashlib模块
md5=hashlib.md5()
md5.update( )
变量=md5.hexdigest()
json模块
''' 序列化模块 序列化 将数据类型转化成json格式的字符串
总复习
python解释器
python2.X
python2.7,在2020不再更新 只有一些老的项目还在使用
python3.X
python3.9最新版本不建议使用,python3.6兼容性高,推荐使用
配置环境变量,可以方便使用编译器
pycharm
# vs code 对小白用户不友好 功能并不是很强大 优点是小 轻便 # pycharm(推荐) 对小白友好 功能异常强大 缺点是"收费" 破解pycharm付费方法 ''' 1.激活码破解(百度搜索、淘宝买) 点击activation code 2.修改配置文件破解 3.插件方式破解(本人目前未找到合适插件) '''
变量于常量
# 常量: 值不变的量 # 变量: 值变化的量 # 变量的命名规范: ''' 1.只能由数字、字母、下划线组成 2.数字不能开头、下划线尽量不要开头 3.变量一定做到看见名子就知道意思 4.变量名不能与关键字重名,例如:print、for、while等 5.变量名推荐使用英语,不建议使用汉语拼音,也不要使用中文 '''
基本数据类型
1.整型int 最简单的,就是整数 2.浮点型float 就是小数 3.字符串str 文字描述
1.列表list eg:list1=[1,'strd',[1,2],1.3] ''' 列表用中括号括起内容 内容可以为,int,float,str或列表 列表内元素之间用逗号,元素是任意数据类型 ''' 2.字典dict ''' 字典用大括号把内容括起 内容元素为K:V组合的键值对,键值对之间用逗号隔开 K表示为对V的描述性质的数据,大部分亲狂下是字符串 V是变量的值,可以是任何数据类型 ''' 3.布尔值bool 只有两个状态:True,False 用来表示对错 4.元组tuple ''' 小括号括起内容 元素之间逗号隔开 性质与列表一样,唯一区别为元组元素不可修改 '''
流程控制
缩进 ''' 用代码的缩进表示不同的流程的从属关系 缩进量相同属于同一从属关系 缩进量建议为一tab,四个空格 ''' 1.顺序结构 最常见的结构,就是由上往下执行命令,一般程序都是如此执行 2.分支结构 根据条件执行不同的流程 if语句: if 条件1: #判断条件1是否符合 执行内容 #符合条件1执行 elif 条件2: #当条件1不符合,判断条件2是否符合 执行内容 #符合条件2执行 elif 条件3: #当条件1和条件2不符合,判断条件1和条件1是否符合 执行内容 #符合条件1和条件2执行 else: #当条件1,条件2和条件3不符合,执行else 执行内容 3.循环结构 根据条件,循环执行不同的流程 while循环: while 条件:# 符合条件就下列子命令,不符合不停执行子命令 子命令 #执行完后返回while判断条件 break #停止本层循环 continue #停止本次循环执行下次循环 for循环 语法:for 变量名 in 可迭代对象: 代码 ''' for循环列表,输出列表元素 for循环字典,只能输出K,无法输出完整键值对 for只能用于容器类型,也可用于字符串 容器类型:可以存放多个元素的类型,例如:列表,元组 '''
数据内置方法
整形 ''' 把数据类型转换为整数 但是无法转换小数型字符和字母 ''' hex() # 转化为十六进制 bin() # 转化为二进制 oct() #转化为八进制 int('二进制数',2) # 把二进制数转化为十进制 int('八进制数',8) # 把八进制数转化为十进制 int('十六进制数',16) # 把十六进制数转化为十进制 浮点型 float() # 将数据类型转化为小数 ''' float函数可以转化,整数,整数型字符和小数型字符 但无法转化字母字符 ''' 字符串 str() # 许多数据都可转化字符串 len() # 用于输出字符个数 strip() # 去除字符串首位的元素 rstrip() # 去除字符串右边的元素 lstrip() # 去除字符串左边的元素 split() # 在特定位置切割字符串,输出列表 upper() # 转大写 lower() # 转小写 isupper # 判断字符串是否为大写,是大写输出True,否则为False islower # 判断字符串是否为小写,是小写输出True,否则为False isdigit() # 判断字符是否为纯数字,是输出True,否输出False count()# 统计字符串元素出现的次数 replace() # 把字符串中的元素替换 join()# 将指定字符拼接到字符串中 列表 List() # 将数据转换为列表形式,但只能转支持for循环数据类型 语法: list[起始位,结束位,间隔数]输出起始位和结束位数列,但不包括结束位,间隔数用于确定元素的间隔大小 l1=[11,22,33,44] print(len(l1)) # 输出为4 print(l1[0:4]) # 输出[11,22,33,44] print(l1[0:4:2]) # 输出[11,33] append() # 可以插入列表或字符,在尾部追加 insert(0,'jason') # 在指定位置插入元素 extend() # 列表合并 del l1[0] # 删除l1列表中,索引位为0的值 remove(22) # 删除元素22 pop() # 弹出指定元素 count() # 函数统计元素个数 sort() # 数据进行升序排序 字典: len() # 键值对个数 get() # 按照key取值 key不存在不报错 返回默认None d[key] # 按照key取值 key不存在会报错 d[key] = value # key存在则修改 不存在则添加 pop() # 弹出键值对 拿到值 集合: 去重:集合内不允许出现重复元素 eg: f1 = {'jason','tony','kevin','jack'} f2 = {'jason','tony','tom','jerry'} # 输出共同的元素 print(f1&f2) # 输出f1有f2没有的 print(f1-f2) # 输出f1和f2所有的元素 print(f1|f2) # 输出各自好友 print(f1^f2) # 判断f1是f2的父集 print(f1>f2) # 判断f1是f2子集 print(f1<f2)
字符编码
# 字符编码的由来 电脑只识别低电平和高电平状态,人为的把低电平定义为0、高电平为1这也是二进制 现今人类的数字和字符之间存在对应关系 # 字符编码的发展 美国最先发明了电脑,为了计算机能识别英语发明了: ASCI码 内部记录了英文与数字的对应关系 中国:GBK码 内部记录英文、中文与数字的对应关系 unicode码(万国码) 内部记录各个国家与数字的对应关系 utf8(万国码优化版) 目前默认使用的编码
编码与解码
encode() 将字符转化为二进制 语法: 变量名.encode('字符编码') decode() 将二进制转化为编码 语法: 变量名.decode('字符编码')
文件处理
''' r 为读模式 无法读取不存在的文件 一次读完 开始时光标在开头,读完在结尾 w 写模式 不存在的文件直接创造 存在,则清空文件再写内容 a 追加模式 不存在的文件直接创造 存在,则光标在末尾 文件模式 t rt,wt,at此为默认模式与上诉相同 只能操作文本文件 需要声明字符编码 b 二进制模式 rb,wb,ab 此模式不必须申明字符编码 只能输出和输入二进制 可识别所有文件内容 '''
函数
''' 提前定义末端代码,类似于把它定义为某种工具,使用时直接使用该工具,不需要,再重新输入代码 函数使用前要先定义 ''' 语法: def 函数名(参数1,参数2): '函数注释' 函数体代码 return函数的返回值 由函数定义的参数且能运用到括号内书写的参数成为形式参数 简称为形参 函数在调用时在括号内书写的函数为实际参数 简称为实参 参数的多种类型 1.位置参数 按照位置把数据输入,多一少一都不行 eg: def index(b,a) print(b,a) index() # 错误 index(1) # 错误 index(1,2) # 输出1 2 index(1,2,3) # 错误 2.关键字参数 指名道姓的给形参专职 可以打破位置限制 eg: index(a=1,b=2) # 输出2 1 index(1,a=3) #输出1 3 index(1,b=3) #错误,位置被交换了 index(b=3,1) #错误位置参数必须在前,短的必须在长的前面 3.默认参数:函数在定义阶段给形参赋的值 eg: def register(name,age,gender='male'): print(name,age,gender) register('jason',18) # 输出jason 18 male register('kitty',23,female) # 输出为kitty 23 female 4.可变长参数 使用*+形参,函数就可以接受多个数据的位置参数,输出结果为元组 eg: def index(a,*b): print(a+2,b) index(1,1,23,4,5,5) # 输出为3 (1, 23, 4, 5, 5) index(1) # 输出1 () 使用**+形参,函数就可以接受多个关键字参数,输出结果为字典 def index(a,**b): print(a+2,b) index(1,b=1,n=3) #输出为 3 {'b': 1, 'n': 3}