栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python中的垃圾机制及字符编码

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python中的垃圾机制及字符编码

垃圾回收机制
1.引用计数

在Python中一个数据值身上的引用计数不为0则表示该数据值还在被引用,不会被删除;

当检测到数据值身上的引用计数为0时则会被垃圾回收机制回收;

name = 'aaa' # 数据值aaa引用给变量name所以aaa的引用计数为 1
name1 = name # 数据值aaa再次引用给变量name1所以现在aaa的引用计数为 2
del name1 # 此时aaa身上的引用计数变为 1
'''引用计数有一特别情况当数据计数变为0时也不会被回收 循环引用'''
2.标记清除

标记清除用来解决循环引用的问题,将程序在内存中的所有数据全部检测,检查到循环引用做好标记 之后一次性清除。

'''循环引用展示'''
l1 = ['a',]
l2 = ['b',]
l1.append(l2) # b引用计数为2
l2.append(l1) # a引用计数为2
del l1  # l1 解除 列表引用计数减1
del l2 # l2 解除 列表引用计数减1
'''列表此时计数为1但没有变量名引用'''
3.分代回收

为了减轻每次都检测全部数据的资源消耗 开发了分代回收,分代回收将数据分成:年轻代(第0代)、中年代(第1代)、老年代(第2代);每一层的检测频率不同,越往下检测频率越低。

 字符编码

1.字符编码就是将某种文字和字符按照一定的规则编译成一一对应的代码。

2.因为计算机只认识0和1,要让计算机理解人的意图就必须把人常用的高级语言字符编译成计算机能识别的代码。

​ 字符 ——> 编译规则(编码表) ——> 二进制代码

3.转换关系不能随个人来,应该有统一的标准:字符编码表

 字符编码发展史
1.ASCII码独大

美国率先制定出一套字符编码方案,因为美国人只需让计算机认识英文字符,所有的英文字符加起来不超过127个(2的七次)但是为了不时之需加到了(2的八次)。此时的计算机只能识别英文不能识别其它文字。

26字母对应的ASCII码:

A-Z        65-90

a-z         97-122 

2.各国的编码表

随着各国的计算机行业的发展,各国陆续推出了自己国家的编码表。比如中国的GBK,日本的shift_JIS,韩国的Euc-kr,等等,都是对应二进制代码。每个国家都使用自己国家编码所以各国计算机文件无法直接交互出现了乱码的情况。

3.编码的统一

万国码的Unicode包含了全球主要国家的字符编码,此时各国国家就可以交互了。但也有不足所有字符全部使用2bytes起步储存;

此时UTF-8就腾空而出,UTF-8 就是在互联网上使用最广的一种 Unicode 的实现方式,英文还是采用1bytes其它统一采用3bytes。

ps:内存使用Unicode,硬盘使用UTF-8

 字符编码实操

ps:只有字符串可以参与编码解码 其它类型需要先转换成字符串才可以。

str.encode('编码方式') : 对字符串进行编码

str.decode('解码方式') :对编码进行解码,解码方式得与编码方式一致

'''编码'''
a1 = '赶紧的要干饭啦!'
res = a1.encode('utf-8')
print(res)
[b'xe8xb5xb6xe7xb4xa7xe7x9ax84xe8xa6x81xe5xb9xb2xe9xa5xadxe5x95xa6xefxbcx81']
'''解码'''
res1 = res.decode('utf-8')
print(res1)
[赶紧的要干饭啦!]

注:以什么方式编码就得以什么方式解码!!!

python2默认的编码为ASCII码

        1.在python2中使用utf-8得加上: # coding:utf-8

        2.定义字符串需要在字符串的前面加:u

python3默认的编码为utf-8码

 文件操作

简介:在python中通过代码对文件进行自动读、写的操作。

open()打开文件
read()读取文件
close()关闭文件
a = open('1.txt',r,encoding='utf-8') # 用utf-8解码方式打开文件
a.close()  # 关闭文件

a = open(r'/Users/Desktop/1.txt',r,encoding='utf-8') 
a.close()

ps:当需要打开的文件与程序在同一文件夹下时可以用相对路径直接打文件名;

当需打开文件与程序文件不在同一文件夹下时需要使用绝对路径打开文件,在使用绝对路径时需要在路径前输"r" r:代表不转义。


 ###今日作业###
1.统计列表中每个数据值出现的次数并组织成字典战士
  eg: l1 = ['jason','jason','kevin','oscar']
      结果:{'jason':2,'kevin':1,'oscar':1}
  真实数据
      l1 = ['jason','jason','kevin','oscar','kevin','tony','kevin']
2.编写员工管理系统
    1.添加员工信息
    2.修改员工薪资
    3.查看指定员工
    4.查看所有员工
    5.删除员工数据
   提示:用户数据有编号、姓名、年龄、岗位、薪资
    数据格式采用字典:思考如何精准定位具体数据>>>:用户编号的作用

 

 

 

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/998154.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号