• 6.28 学习内容


    昨日内容回顾

    • 列表的内置方法
    1.类型转换
    2.索引取值的操作
    3.统计列表的数据个数
    	(len)关键字
    4.增加数据值 
    	(append)尾部增加数据值
    	(sinert)索引插入数据值
    	(extend)扩展列表 底层原理 for+append
    	(+) 也可以使用 + 号
    5.修改数据值
    	通过索引修改想要修改的数据 list[] = 新的数值
    6.删除数据值
    	(del) 索引删除
    	(pop) 默认删除尾部 也可以通过索引删除
    	(remove) 明确删除数据值
    7.排序 
    	(sort)
    8.翻转
    	remevse
    9.比较运算
    
    • 可变类型与不可变类型
    1.可变的类型
    	调用方法是修改自己的本身
    2.不可变的类型
    	调用方式是产生新的数值 需要重新绑定变量名的数据值
    
    • 元组的内置方法
    1.类型转换 支持 for循环的都可以转成元组,元组在空括号时转换的是元组 
    需要注意的是当元组只有一个数据值是什么类型就是什么类型 所以要在数据值后加上逗号
    2.索引取值
    3.统计元组内数据的个数 len
    4.查与改
    	元组支持查 不支持修改
    
    • 字典的内置方法
    1.字典内的K V键值对无序的 不支持索引取值
    2.取值操作 get
    3.统计字典内的键值对个数 len
    4.查找 通过索引K进行查找 或get方法
    4.修改与增加
    	通过索引K 来修改 
    	在没有K 的时候是增加
    5.删除
    	del、pop、popitem
    6.快速生成字典
    	formkeys
    7.快速获取 K V 键值对 (key、vluses、items)
    
    • 集合的内置方法
    1.类型转换
    	支持 for循环的类型 并且必须是数据类型不可变的
    2.定义空集合 set()
    3.自带去重功能
    4.关系运算
    	& | ^ > <
    

    今日内容概要

    • 垃圾回收机制
    • 字符编码简介
    • 字符编码的发展史
    • 字符编码实操
    • 文件操作简介

    今日内容详细

    垃圾回收机制
    1.什么是垃圾回收机制
    在python中编辑会产生很多的数据值 当没有绑定变量的数据值则会被当成垃圾回收
    '''python会自动申请内存和释放空间'''
    2.引用计数
    当数据值身上计数不为0时表示还有用 不会被回收
    当数据值身上计数为0时 则会被垃圾机制当成垃圾回收

    eg:
    	name = 'jason' # jason身上引用计数为1
    	name1 = name # 此时jason身上引用计数为2
    	del name # jason 身上引用计数减1
    当一个数据值身上有一个引用计数则不会被垃圾机制回收
    

    3.标记清除
    专门用于解决循环引用的问题 将内存中程序所产生的所有数据全部检查一遍 是否存在循环打上标记之后一次性清除

    eg:
    	l1 = ['jason']
    	l2 = ['lisa']
    	l1.append(l2) # 引用计数2
    	l2.append(l1) # 引用计数2
    	del l1 # 解除变量名与l1列表的绑定列表引用计数减一
    	del l2 # 解除变量名与l2列表的绑定列表引用计数减一
    当我们把l1和l2的数据解除了 l1和l2的数据还是相互调用 计数存在是一,所以不能被垃圾机制回收
    

    4.分带回收
    标记清除每隔一段时间就要把所以的数据查一遍 资源消耗过大
    为了减轻垃圾机制的资源损耗 所以开发了三代管理 越往下检测的频率就越低
    image

    字符的编码简介

    1.只有文本文件才有字符编码的概念
    2.计算机内部存取得数据本质 (二进制)
    计算机其实只认识0和1
    3.为什么我们在使用计算机的时候能随意敲出各国的文字
    因为计算机不认识我们人类的语言,所以我们人类定义一种数字的转换关系
    4.转换关系不能随便改变 应该有统一的标准
    字符编码表 记录了人类的字符与数字的对应关系

    字符的编码发展史

    1.一家独大
    计算机是美国人发明的 美国人需要让计算机识别英文字符
    ps:英文所有的字符加起来不超过127个(2的七次方) 但是美国人考虑到后续可能出现新的字符所以加了以为以备不时之需(2的八次方)
    ASCII:内部值记录了英文字符与数据的对应关系 1bytes来存储字符
    image
    2.群雄割据

    因为ASCII表只能表示英文不能表示中文
    后面我们中国开发了一套可以识别中文的编码表
    	GBK码表:内部记录了中文字符、英文字符与数字对应的关系
    		2bybes起步储存中文 (遇到生僻字需要使用跟多的字节)
    		1bybes存储英文
    韩国对应的编码表 EUS_kr码
    	记录了韩文字符与英文字符、数字的对应关系
    日本对应的编码表 shift_JIS码表
    	记录了日文与英文字符、数字的对应关系
    注意:此时的各国计算机文件文本无法直接交互 会出现乱码的情况
    
    3.天下统一
    万国码(unicde):兼容万国字符
    	所有的字符可以全部使用2bytes起步存储
    utf家族(针对unicde的优化版本):utf8
    	英文还是采用1bytes
    	其他统一采用3bybes
    注:内存使用unicode 硬盘使用utf8
    

    字符的编码实操

    1.只有字符串可以参与编码解码 其他数据类型需要先转换成字符串才可以
    2.如何解决乱码
    	当初使用什么编码存的就使用什么代码解
    3.编码与解码
    	把人类的字符按照指定的编码转换成计算机识别的数字
    
    编码:人类的字符>>>计算机的字符
    使用encode 能将人类的认识的字符转成计算机读懂的字符
    	a = 'lisa:说皇天不负有心人'
    	res = a.encode('utf8') 
    	print(res) # b'lisa\xef\xbc\x9a\xe8\xaf\xb4\xe7\x9a\x87\xe5\xa4\xa9\xe4\xb8\x8d\xe8\xb4\x9f\xe6\x9c\x89\xe5\xbf\x83\xe4\xba\xba'
    '''在python中bytes类型的数据可以看成是二进制数'''
    解码:计算机的字符>>>人类的字符
    	b = a.decode(gbk)
    	print(a)
    3.解释器层面
    	python2默认的编码是ASCII码
    	3.1文件头 # coding:utf8
    	3.2定义字符串 (需要在字符串的前面加u)
    为什么要这么做 因为没有办法 只能做补救措施
    	python3默认的编码是utf8
    

    文件操作简介

    1.文件操作?
    	通过编写代码自动来操作文件读写
    2.什么是文件?
    	双击文件图标是从硬件加载数据到内存
    	写文件之后保存其实就是将内存的数据刷到硬盘
    	文件其实就是操作系统暴露给用户操作计算机硬盘的快捷方式之一
    
    3.如何代码操作文件
    	open('文件路径',读写模式,字符编码')
    	方法1:
    	f = open()
    	f.close()
    	方法2:
    	with open() as 变量名
    	子代码在运行之后自动调用close()方法
    4.针对文件路径可能有特殊含义字母与撬棍的组合
    	在字符串的前面加字母r取消特殊含义
  • 相关阅读:
    嵌入式软件开发新趋势:DevOps
    QT学习day4
    数字孪生与元宇宙在关键技术方面的异同
    C++选择排序小练
    第十五章 图的BFS与拓扑序列
    Linux内核宏Container_Of
    Abp6.0 使用 appsettings.json配置Serilog.Sinks.MariaDB
    PCIe系列专题之二:2.2 TLP事务处理方式解析
    Stable Diffusion云服务器部署完整版教程
    实现退出登录
  • 原文地址:https://www.cnblogs.com/lisony/p/16421737.html