python中垃圾回收机制与字符编码简介
'''python会自动申请释放内存空间,python底层进行内部管理,无需像其它编程语言手动编写代码'''
具体怎么进行?哪些可以删除?哪些不能删除?分为三个部分:引用计数、标记清除、分带回收。
1、引用计数
当数据值身上的引用计数不为0时,表示该数据值为有效数据,不会被删除
当数据值身上的引用计数为0时,表示该数据无效为垃圾数据,则会被python垃圾回收机制回收
eg:name = ‘curry’ # 数据值curry身上的引用计数就是1
name = ‘name’ # 数据值curry绑定两个数据,此时的引用计数是2
del namel # 数据值curry身上删除1个,此时的引用计数为1
'''引用计数存在1处注意事项>>>循环引用'''

2、标记清除
# 循环引用
l1 = ['curry']
l2 = ['kevin']
l1.append(l2) # 此时引用计数为2
l2.append(l1) # 此时引用计数为2
del l1 # 解除变量名l1与列表的绑定关系 列表引用计数减一
del l2 # 解除变量名l2与列表的绑定关系 列表引用计数减一
3、分代回收
标记清除每隔一段时间就需要将所有的数据筛查一遍 资源消耗过大
为了减轻垃圾回收机制的资源消耗 开发了三代管理:初生代、青春代、老年代越往下检测的频率越低!!!

字符编码简介
1、只有文本文件才有字符编码的概念 只针对文本文件 视频 音频 图片均不是
2、计算机内部存储的本质>>>二进制
计算机只认识0和1组合
3、为什么我们在使用计算机的时候可以随意敲出各国文字?
因为存在一个人类字符与数字的转换关系
4、转换关系不能随变更改 应该有统一的标准
字符编码表>>>:记录了人类字符与数字的对应关系,利用字符编码表让计算机帮你写出你想要的字符
字符编码发展史
1、一家独大
计算机是在1889年由美国科学家赫尔曼·何乐礼研制出以电力为基础的电动制表机,用以储存计算资料 美国人需要让计算机识别英文字符
ps:英文所有的字符加起来不超过127个(2的七次方) 但是美国人考虑到后续可能出现新的字符 以备不时之需就多加了一位(2的八次方)
ASCII码:内部只记录了英文字符与数字的对应关系
1bytes来存储字符
A-Z 65-90
a-z 97-122
ps:此时的计算机只能识别英文 不能识别其他文字
2、群雄割据
中国
需要计算机识别中文 开发一套中文的编码表
GBK码:内部记录兼容了中文字符、英文字符与数字的对应关系
2bytes起步进行存储中文(遇到生僻字使用更多字母)
1bytes存储英文
韩国
需要计算机识别韩文 开发一套韩文的编码表
Euc_kr码:内部记录兼容了韩文字符、英文字符与数字的对应关系
日本
需要计算机识别日文 开发一套日文的编码表
shift_JIS码:内部记录兼容了日文字符、英文字符与数字的对应关系
ps:此时各国计算机文件无法直接交互 会出现乱码的情况(因为字符解释引用不同的编码本)
3、天下一统
万国码(unicode):兼容万国字符,是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。
所有的字符全部使用2bytes起步存储
utf家族(Unicode Transformation Format):针对unicode的优化版本>>>utf8
英文还是采用1bytes
其他统一采用3bytes
ps:现在内存用的unicode可以兼容万国 硬盘用的utf8减少存储空间 为了减少IO操作的时间
字符编码实操
'''只有字符串才可以参与编码和解码 其他数据类型需要先转换成字符串才可以...'''
1、解决乱码的措施
当初以什么编码存的就用什么编码解,保持一致
2、编码与解码
编码(人类的字符转换成计算机的字符)
将人类的字符按照指定的编码转换成计算机可以识别的数字
解码(计算机的字符转换成人类的字符)
将计算机能够识别的数字按照指定的编码转成人类可以识别的
s1 = '好好学习'
# 编码
res = s1.encode('utf8')
print(res, type(res))
'''
在python中bytes类型的数据可以直接看成二进制数据
'''
# 解码
res1 = res.decode('utf8')
print(res1)
3、解释器层面
unicode于1994年正式发布1.0版本
python2第一个公开发行版发行于1991年,默认的编码是ASCII
1、文件头
# coding:utf8
2、定义字符串
需要在字符串的前面加u
python3默认的编码utf8
文件操作简介
1、文件操作
通过编写代码自动操作文件被写
2、什么是文件?
双击文件图标是从硬盘加载数据到内存 写文件之后保存是为了将内存中的数据保存到硬盘
文件就是操作系统暴露给用户操作计算机硬盘的快捷方式!!!
3、如何代码操作文件?
open(文件路径,读写模式,字符编码)
方式1
f = open()
f.close()
res = open('a.txt','r',encoding='utf8')
print(res.read())
res.close()
方式2
with open() as 变量名:
with open('a.txt', 'r', encoding='utf8')
print(f.read())
子代码运行到结束之后自动调用close()方法
4、针对文件路径需要注意 可能存在特殊含义(字母与撬棍的组合)
在字符串的前面加字母r即可取消特殊含义
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)