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}

 

posted @ 2021-08-27 17:11  微纯册  阅读(36)  评论(0编辑  收藏  举报