周报

文件

1.文件是什么
文件是计算机给用户操作硬盘的快捷方式

2.代码的打开方式
方式1:
f=open(文件路径,读写模式,encoding='utf8')
方式2:
with open{文件路径,读写模式,encoding='utf8'}as f:
    with 子代码块
ps:with上下文管理好处在于子代码运行结束自动调用close方法关闭资源

3.文件的读写模式
'r' 只读不写
'w' 只写不读 文件路径存在先清空内容然后再写入
'a' 追加模式 文件末尾添加数据 文件路径存在自动在末尾等待追加内容

4.文件操作模式
文本模式
1.只能操作文本文件
2.读写都是以字符为单位
3.需要编码转化 如果不用则会使用计算机默认编码
二进制模式
4.可以操作任意类型文件
5.读写都是以bytes为单位
6.不需要指定encoding参数 因为是二进制编码 不需要转换编码

5.文件的诸多方法
1.read()
一次性读取文件内容 括号内可以填数字 在文本模式下 表示读取几个字符
2.for循环
一行行读取文件内容 避免内存溢出
3.readline()
一次只读取一行内容
4.readlines()
一次性读取文件内容 会按照行数组织成列表一个个数据值
5.readable()
判断文件是否具有读数据的能力
6.write()
写入数据

6.文件内光标移动
seek(offset, whence)
offset是位移量 以字节为单位
whence是模式 0 1 2
0 是基于文本开头	文本二进制模式都可
1 是基于当前位置	二进制模式
2 是基于文件末尾	二进制模式

函数与参数

1.什么是函数?
函数相当于工具 
不用函数
修理工需要维修时需要工具 原地打造 用完就丢 下次用了再造
用函数
修理前提前准备好工具 什么时候想用就什么时候用

2.循环和函数的区别
循环
相同的代码在相同的位置反复执行
函数
相同的代码在不同的位置反复执行

3.函数的语法结构
def 函数名(参数):
	'''函数注释'''
    函数体代码
    return 返回值

4.函数的定义与调用
1.函数在定义阶段值检测语法 不执行代码
	def func():
        pass
2.函数在调用阶段才会执行函数体代码
	func()
3.函数必须先定义再调用

5.函数的分类
1.空函数
函数体代码为空或者pass或者...补全
主要用于项目前期功能框架搭建
2.无参函数
定义函数时括号内没有参数
3.有参函数
定义函数时括号内有参数
调用函数时括号传参数

6.函数返回值
1.什么是返回值
调用函数后返回调用者的结果
2.如何获取返回值
变量名 赋值符号 函数的调用
3.函数返回值的多种情况
函数体代码没有return关键字 默认返回None
函数体代码有return关键字 如果后面没有写任何东西还是返回None
函数体代码有return关键字 后面写什么就返回什么
函数体代码有return关键字并且后面有多个数据值 则会自动组成元组返回
函数体代码遇到return会立刻结束

7.函数的参数
形参
再函数定义阶段括号内添写的参数
实参
在函数调用阶段括号内添写的参数

8.形参和实参的关系
形参类似于变量名 在函数定义阶段可以随便写 最好见名知意
实参类似于数据值 在函数调用阶段和形参进行临时绑定 函数运行结束立刻解除绑定

9.位置参数
位置形参
函数定义阶段括号内从左往右依次添写变量名
位置实参
函数调用阶段括号内从左往右依次添写的数据值
"""
越短越简单的在前
越长越复杂的在后
同一个形参在调用时不能多次赋值
"""

10.默认参数
关键字参数
关键字形参
提前给 用户可以传 也可以不传
关键字实参
指名道姓的传

11.可变长参数
可变长形参
*号在形参中用于接收多余的位置参数 组织成元组赋值给*号后面的变量名
**号在形参中用于接收多余的关键字参数 组织成字典赋值给**后面的变量名
可变长实参
*号类似于for循环 将所有循环遍历出来的数据按照位置参数一次性传给函数
**号是将字典打散成关键字形式传递给函数

名称空间

名称空间就是用来存储变量名于数据值绑定关系的地方
1.内置名称空间
解释器运行产生 里面包含很多名字
len print input

2.全局名称空间
py文件运行产生 里面放文件级别名字
name age index

3.局部名称空间
函数体代码运行 产生的空间

名称空间存活周期
内置名称空间
python解释器启动则创建 关闭销毁
全局名称空间
py文件执行创建 运行结束销毁
局部名称空间
函数体代码运行创建 还书体代码运行结束销毁

名字查找顺序
局部>>>全局>>>内置

闭包函数

1.global与nonlocal
global
局部名称空间直接修改全局名称空间中的数据
nonlocal
内部名称空间修改外层层空间数据

2.函数名的多种用法		
    1.可以当作变量赋值
    2.可以当作函数的返回值
    3.可以当作函数的参数
    4.可以当作容器类型
    
3.闭包函数
定义在函数内部并且用到外部函数空间中的名字

装饰器

1.概念
在不改变被装饰对象原代码和调用方式的情况下给被装饰对象添加新的功能
2.本质
不是一门新的技术 是由函数参数、名称空间、函数名的多种用法、闭包函数组合在一起的结果
3.口诀
对修改封闭 对扩展开发

时间相关操作
import time
print(time.time()) #时间戳 距离1970-01-01 00:00:00所经历的秒数

无参装饰器模板
def outer(func):
    def inner(*arges,**kwarges):
        # 执行被装饰对象之前可以做的额外操作
        res = func(*arges,**kwarges)
        # 执行被装饰对象之后可以做的额外操作
        return res
    return inner

装饰器语法糖
语法糖会自动将下面紧挨着的函数名当作第一个参数自动传给@函数调用
多层语法糖
加载由下往上 执行从上到下
每次执行之后如果上面还有语法糖 则直接将返回值函数名传给上面的语法糖当参数
如果上面没有语法糖了则变形

有参装饰器模板
def outer_plus(mode):
    def outer(func):
        def inner(*arges,**kwarges):
            res = func(*arges,**kwarges)
            return res
        return inner
    return outer

装饰器修复功能
from functools import wraps
@wraps (func_name) # 仅仅是为了让装饰器的效果更加逼真 平时可以不写

递归函数

1.函数直接或间接调用函数本身
2.每次调用都必须比上次简单 并且需要一个明确的条件
递推:一层层往下
回溯:基于明确的结果一层层往上
最大递归深度为1000

算法

算法就是解决问题的有效方法 不是所有算法都是很高效也有不合格的算法

算法的应用场景
推荐算法
成像算法

二分法
待查找数据必须有序
针对开头结尾的数据 查找效率低

表达式

三元表达式
数据值1 if 条件 else 数据2
条件成立使用数据值1 条件不成立使用数据值2
不推荐多个三元表达式嵌套

for循环
f'要添加的数据'
循环添加

列表生成式
new_list = [name+'要添加的数据' for name in name_list]
print(new_list)

字典生成式
for v,k in enumerate(l1,start=0)
print(v,k)

集合生成式
res = {i for in 'hello'}
print(res)

匿名函数

没有名字的函数 需要使用关键字lambds
语法结构
	lambds 形参:返回值
使用场景
	lambds a,b:a+b
匿名函数一般不单独使用 需要配和其他函数一起使用

内置函数

重要的内置函数
1.map()映射
2.max()\min() 比较求最大值\最小值
3.reduce() 归总 传多个值 返回一个值
4.zip 拉链
5.filter 过滤
6.sorted 排序

常见的内置函数
1.abs 获取绝对值
2.all()\any() 一个是全部 一个是任一
3.bin()oct()hex() 二进制 八进制 十六进制
4.bytes() 类型转换
5.callable() 判断当前对象是否可以加括号调用
6.enumerate() 枚举

可迭代对象

迭代就是更新换代,并且在更新换代时,要更新的内容还要依靠上一次更新的结果
含义
内置中有__iter__方法的都成为可迭代对象

可迭代对象的范围
不是可迭代对象
int float bool 函数对象
是可迭代对象
str list dict set tuple 文件对象

可迭代在python中可以理解为是否支持for循环

迭代器对象

1.含义
可迭代对象调用__iter__,生成的结果就是迭代器对象
2.特征
含有__iter__的方法和__next__方法
3.迭代器取值
调用__next__方法,当值被取完会发生报错

迭代取值与索引取值的对比
1.索引取值:
    优势:可以反复的获取相同的元素,且没有固定的方向
    劣势:只能支持有序的容器类型,无序无法取值
2.迭代取值:
    优势:兼容所有容器类型
    劣势:取值的顺序永远是从左到右,但是没法重复获取

for循环的本质

for 变量名 in 可迭代对象:
    循环体代码
    
1.先将in后面的数据调用__iter__方法转变成迭代器对象
2.依次让迭代器对象调用__next__取值
3.一旦__next__取不到值报错 for循环会自动捕获并处理

异常捕获/处理

1.异常
异常就是代码运行报错 又称bug
代码中运行一旦遇到异常会直接结束整个程序的运行
2.异常分类
语法错误
逻辑错误
3.异常结构
错误位置
错误类型
错误详情
posted @ 2022-10-16 20:14  Super小赵  阅读(121)  评论(0编辑  收藏  举报
****************************************** 页脚Html代码 ******************************************