第三周学习笔记总结
今日内容概要
- 垃圾回收机制
- 字符编码
- 文件处理
- 函数的基本使用
- 函数的参数
今日内容详细
垃圾回收机制
定义
垃圾回收机制是python解释器自带的一种机制,专门用来回收不可用的变量值所占用的内存空间
原理
引用计数
引用计数就是变量值被变量名关联的次数
缺陷:循环引用
标记清除
专门用于解决循环引用的问题,将内存中程序产生的所有数据值全部检查一遍,是否存在循环引用打上标记,之后一次性清除
缺点:资源消耗太大
分代回收
标记清除每隔一段时间需要将所有的数据排查一遍,资源消耗过大,为了减轻垃圾回收机制的资源消耗,开发了三代管理
字符编码
字符编码简介
1.只有文本文件才有字符编码的概念
2.计算机内部存取数据的本质:二进制
3.字符编码表:记录了人类的字符与数字的对应关系
字符编码发展史
1.一家独大
ASCII码:内部只记录了英文字符与数字的对应关系
1bytes来存储字符
ps:此时的计算机只能识别英文,不识别其他文字
2.群雄割据
GBK码:内部记录了中文字符,英文字符与数字的对应关系
2bytes起步存储中文(遇到生僻字使用更多字节)
1bytes存储英文
Euc_kr码:韩国
shift_JIS码:日本
ps:此时的各国计算机文本文件无法直接交互,会出现乱码的情况
3.天下一统
万国码(unicode):兼容万国字符
所有的字符全部使用2bytes起步存储
utf家族(针对unicode的优化版本):utf8
英文还是采用1bytes
其他统一采用3bytes
ps:内存使用unicode,硬盘使用utf8
字符编码实操
只有字符串可以参与编码解码,其他数据类型需要先转成字符串才可以
1.解决乱码措施
当初以什么编码存储的就以什么编码解
2.编码与解码
编码(人类的字符翻译成计算机得到字符)
将人类的字符按照指定的编码转换成计算机可以识别的数字
解码(计算机的字符翻译成人类的字符)
将计算机能够识别的数字按照指定的编码转成人类可以读懂的字符
3.解释器层面
python2默认的编码是ASCII码
python3默认的编码是utf8码
文件处理
定义
文件是操作系统暴露给用户操作计算机硬盘的快捷方式之一
操作文件是通过编写代码自动操作文件读写
open(文件路径,读写模式,字符编码)
# 方式1:
f = open()
f.close()
# 方式2:
with open() as 变量名:
子代码运行结束之后自动调用close()方法
文件读写模式
值 | 描述 |
---|---|
r | 只读取 ,文件不存在时则报错,文件存在文件内指针直接跳到文件开头 |
w | 只写入,文件不存在时会创建空文档,文件存在会清空文件,文件指针跑到文件开头 |
x | 只写入,文件已存在则无法创建文件和写入内容 |
a | 只追加写,文件不存在时会创建空文档,文件存在会将文件指针直接移动到文件末尾 |
t | 文本模式(默认值,与其他模式结合使用) |
b | 二进制模式(与其他模式结合使用) |
+ | 读写模式(与其他模式结合使用) |
rb | 以二进制格式打开一个文件用于只读 |
wb | 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件 |
ab | 以二进制格式打开一个文件用于追加,如果该文件已存在,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入 |
r+ | 打开一个文件用于读写 |
rb+ | 以二进制格式打开一个文件用于读写 |
w+ | 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件 |
wb+ | 以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件 |
a+ | 打开一个文件用于读写,如果该文件已存在,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入 |
ab+ | 以二进制格式打开一个文件用于追加,如果该文件已存在,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入 |
文件操作诸多方法
read()一次性读取文件内容
readline()一次只读一行内容
readlines()按照行的方式读取所有的内容并组织成列表返回
readable()判断当前文件是否可读
writable()判断当前文件是否可写
write()填写文件内容
writelines()支持填写容器类型(内部可以存放多个数据值的数据类型)多个数据值
flush()将内存中的文件数据立刻刷到硬盘(等于主动按ctrl+s)
文件内光标移动
在文本模式下read括号内的数字表示读取几个字符
在二进制模式下read括号内的数字表示读取几个字节(英文一个字节,中文三个字节)
seek(offset,whence)
offset:控制光标移动的字节数
whence:模式
0:默认模式,代表指针移动的字节数是以文件开头为参照的
1:代表指针移动的字节数是以当前所在位置为参照的
2:代表指针移动的字节数是以文件末尾的位置为参照的
ps:1和2只能在二进制模式下使用,0无所谓
文件内数据修改
1.覆盖写
先读取文件内容到内存,在内存中完成修改之后w模式打开该文件写入
优点:硬盘只占用一块空间
缺点:数据量较大的时候会造成内存溢出
2.重命名
先读取文件内容到内存,在内存中完成修改之后保存到另外一个文件中,再将原文件删除,将新的文件重命名为原文件
优点:不会造成内存溢出
缺点:有那么一段时间需要占用硬盘两个地方的空间(可能),也可能是在内存中创建没有刷到硬盘
函数的基本使用
函数的本质
函数可以看成是工具
提前定义好,之后可以反复使用
函数的语法结构
def 函数名 (参数1,参数2):
```函数注释```
函数体代码
return 返回值
函数的分类
1.内置函数
解释器提前帮你定义好,用户可以直接调用
2.自定义函数
空函数:函数体代码使用pass顶替,暂时没有任何功能
无参函数:函数定义阶段括号内没有填写参数
有参函数:函数定义阶段括号内填写参数
函数的返回值
1.函数体代码没有return关键字:默认返回None
2.函数体代码有return关键字:后面不写,也返回None
3.函数体代码有return关键字:return后面写什么就返回什么(如果是数据值则直接返回,如果是变量则需要找到对应的数据值返回)
4.函数体代码有return关键字并且后面写了多个数据值(名字)逗号隔开:默认情况下会自动组织成元组返回
5.函数体代码遇到return关键字会立刻结束函数体代码的运行
函数的参数
形式参数
函数在定义阶段括号内填写的参数
实际参数
函数在调用阶段括号内填写的参数
形参与实参关系:
形参相当于是变量名
实参相当于是数据值
位置参数
1.位置形参:在函数定义阶段括号内从左往右依次填写的数据值
2.位置实参:在函数调用阶段括号内从左往右依次填写的数据值
关键字参数
关键字实参:在函数调用阶段括号内以什么等于什么的形式传值称之为关键字实参
默认值参数
默认值形参:在函数定义阶段括号内什么等于什么的形式填写得到的形参称之为默认值形参
可变长参数
可变长形参:可以打破参与实参的个数限制,随意传值
小诀窍:无论是形参还是实参,都遵循短的(简单的)在长的(复杂的)前面
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了