python之内存与编码的那点事
一、初始编码
ASCII 码不支持中文 是py2版本中的默认编码
Unicode 万国码, 英文使用16位(即两个字节),中文使用32位(四个字节)
utf-8 美国最少使用八位(1字节), 欧洲使用十六位(2字节), 亚洲是二十四位(3字节) #最常用的编码方式
utf-16 最少使用十六位
gbk(国标)国家标准编码方式 其中中文要用十六位(2字节)表示,英文使用8位(1字节)
单位换算:
8位(bit) = 1字节(byte)
1024(byte) = 1(kb)
各种编码方式的发展:
首先是ASCII码,然后由于其中没有各国的语言,所以就出现了各国自己的国标码,由于国家之间的国标码没有统一互不兼容,会出现乱码,所以就出现了包含各国语言的unicode码,但是由于其至少要使用两个字节十六位表示,进行读取的时候会很浪费空间,故最后出现了utf-8这一编码方式,是可以节省空间的
二、二次编码
1.编码即编译的其中一步:就是将代码转换为字节码的过程.由于python属于编译型语言,故需要先将的代码编译成字节码,在转换成机器码给计算机识别,故将代码转换为字节码就是实现代码的第一步,我们一般用.encode()方法进行编码,.decode()的方法进行解码,用什么编码方式编的就用什么解
a = '你好黑'
a.encode('gbk') #编码 括号里放编码方式,将其变为什么编码
a.decode(''gbk') #解码 ,必须用同一种编码方式
注意:
1.用什么编码就用什么解码
2.在国内windows系统默认使用gbk编码方式
3.bytes 字节 是一个数据类型 是用来存储和传输
三、小数据池
注意:小数据池只针对数字,字符串和布尔值!
1.bool值 ,True False,i无论创建多少个变量指向它,他在内存中的地址都是一个
2.数字的小数据池范围是-5到256
3.字符串小数据池的规则:
1.自己定义的且不含有特殊字符的字符串没有限制,有特殊字符的字符串长度必须是为0或者1时,才能没有限制
2. 没有特殊字符的用乘法得到的字符串时:
a.当乘数为 0或者1的时候,是,是可以使用小数据池的
b.当乘数大于1的时候,字符串乘完以后的字符串数量y 要小于等于20.
3.当含有特殊字符进行乘法运算时:
a.字符串的长度要大于一
##满足以上的条件的数据才能使用小数据池!!!
要注意:"代码块内的缓存机制是和代码块之间的缓存机制不同的!
在执行一个代码块内的命令时,python会先检查这个值是不是已经存在,如果存在,则会直接调用这个存在的数据,这样就会导致在一个代码块中的两个变量指向同一个内存地址.
多个代码块中是使用小数据池的.!!!!
在进行,不同的代码块之间的命令时,pythonh会先查询小数据池,看看这个数据是否是满足小数据池的数据e如果是那会指向同一个地址,所以当两个代码块执行的时候,不满足小数据池的数据会得到两个不同的对象
综上所述,要通过 is 查看两个数据是否是一个对象,主要是查看内存地址是否一样.
四、id is ==
1.用法
id : #查询内存地址
== : #是判断两边的数据是不是一样
is : #是判断两边的数据是不是一个 内存地址
总结: ‘ ==’ 是 比较 符号 两边表达式 的值是否相等,而 ‘is' 是比较两边的对象是否是同一个内存地址。如内存地址相等,那么这两边指向同一个内存空间。
可以说,如果内存地址相同,那么值一定相同; 值相同,内存地址不一定相同。.
a = 100
b = 100 这两个是在一个代码块中
#### Python 程序是由代码块构造的,块是一个python程序的文本,它是作为一个执行单元的。
代码块:一个模块,一个函数,一个类,一个文件等都是一个代码块。在一个py文件中只要顶行写都是代码块,同一个代码块的内存地址是一个的。
python之内存与编码的那点事的更多相关文章
- 聊聊python 2中的编码
为什么需要编码: 计算机可以存储和处理二进制,那么从文字到计算机可以识别的二进制之间需要对应的关系,于是便有了ASCII,ASSCII使用7位字符,由于1byte=8bit,所以最高位补一个0,使用8 ...
- python基础——字符串和编码
python基础——字符串和编码 字符串也是一种数据类型,但是,字符串比较特殊的是还有一个编码问题. 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.最早的计算机在设计时采用 ...
- Python 2 中的编码
在 Python 尤其是 Python2 中,编码问题是困扰开发者尤其初学者的一大问题.什么 Unicode/UTF-8/str ,又是 decode/encode 的,搞得人头都大了.其实不然,这有 ...
- Python基础之字符编码
前言 字符编码非常容易出问题,我们要牢记几句话: 1.用什么编码保存的,就要用什么编码打开 2.程序的执行,是先将文件读入内存中 3.unicode是父编码,只能encode解码成其他编码格式 utf ...
- Python系列之 - 字符编码问题
1.内存和硬盘都是用来存储的. CPU:速度快 硬盘:永久保存 2.文本编辑器存取文件的原理(nodepad++,pycharm,word) 打开编辑器就可以启动一个进程,是在内存中的,所以在编辑器编 ...
- Python全栈开发之路 【第三篇】:Python基础之字符编码和文件操作
本节内容 一.三元运算 三元运算又称三目运算,是对简单的条件语句的简写,如: 简单条件语句: if 条件成立: val = 1 else: val = 2 改成三元运算: val = 1 if 条件成 ...
- Python自动化开发 - 字符编码、文件和集合
本节内容 字符编码 文件操作 集合 一.字符编码 1.编码 计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.解决思路:数字与符号建立一对一映射,用不同数字表示不同符号. ASCI ...
- python基础_字符编码
字符编码的历史 阶段一:现代计算机起源于美国,最早诞生也是基于英文考虑的ASCII 阶段二:为了满足中文,中国人定制了GBK 阶段三:各国有各国的标准,就会不可避免地出现冲突,结果就是,在多语言混合的 ...
- 六 Python基础 字符串和编码
字符编码 我们已经讲过了,字符串也是一种数据类型,但是,字符串比较特殊的是还有一个编码问题. 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.最早的计算机在设计时采用8个比特 ...
随机推荐
- 【Leetcode】【Medium】Find Peak Element
A peak element is an element that is greater than its neighbors. Given an input array where num[i] ≠ ...
- ELK_Elastic Search和kibana版本对应关系
https://www.elastic.co/downloads/past-releases/kibana-5-0-0 https://www.elastic.co/downloads/past-re ...
- 08提权 系统文件权限和远程连接IP绕过 安装后门
大家都知道08权限的系统权限设置很严格 面对限制IP连接的情况 我们及时拿到system权限 有账号也上不去这种情况下只能弄shift后门 或者放大镜了 但08权限 在system权限也操作不了系 ...
- BZOJ 3680: 吊打XXX (模拟退火)
//yy:今天简单入门学了下ORZ 爬山算法:兔子朝着比现在高的地方跳去.它找到了不远处的最高山峰.但是这座山不一定是珠穆朗玛峰.这就是爬山算法,它不能保证局部最优值就是全局最优值. 模拟退火:兔子喝 ...
- hdu-4135 Co-prime---容斥定理经典&&求1-m中与n互质的数目
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4135 题目大意: 求区间[a, b]中与N互质的数目. 解题思路: 首先对n求出所有素因子. 对于区 ...
- 阅读SessionFactory源码
一.阅读类注释 ①.SessionFactory的主要任务是创建Session的实例.通常一个应用程序只有一个单一的SessionFactory对象,而且线程从这个SessionFactory中获取S ...
- oracle 通配符及regexp_count函数说明
通配符 通配符描述示例 %:匹配包含零个或更多字符的任意字符串.WHERE title LIKE '%computer%' 将查找处于书名任意位置的包含单词 computer 的所有书名. ...
- maven学习利用Profile构建不同环境的部署包
项目开发好以后,通常要在多个环境部署,象我们公司多达5种环境:本机环境(local).(开发小组内自测的)开发环境(dev).(提供给测试团队的)测试环境(test).预发布环境(pre).正式生产环 ...
- 【转】优秀的Java程序员必须了解GC的工作原理
一个优秀的Java程序员必须了解GC的工作原理.如何优化GC的性能.如何与GC进行有限的交互,因为有一些应用程序对性能要求较高,例如嵌入式系统.实时系统等,只有全面提升内存的管理效率 ,才能提高整个应 ...
- ListView 中嵌套 GridView
1.主布局文件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:andr ...