python基础之小数据池,is和==区别 编码问题
主要内容 小数据池,is和==区别 编码问题 小数据池 一种缓存机制,也称为驻留机制,是为了能更快提高一些字符串和整数的处理速度
is 和 == 的区别
== 主要指对变量值是否相等的判断,只要数值相同一定为真
is 主要是对变量内存地址是否相同的判断,变量值相同不一定为真,但是变量内存地址相同,则变量一定相同。 tips:可通过id()来查询变量id why: 1.为什么会存在不同变量共用一个内存地址的情况?
1.前面说到的小数据池,即缓存。一部分字符串会被放在缓存中被公用,以提高处理速度 why: 2.为什么command命令窗口中和在Pycharm中同样输入给a,b赋值,得到的结果不一样?
1.python程序是由代码块构成的. 一个代码块的文本作为python程序执行的单元.一个模块, 一个函数, 一个类, 甚至每一个command命令都是一个代码块. ⼀个文件也是一个代码块
2.在command命令窗口,a,b赋值是两个命令,而在Pycharm中认为是执行了一个文件(文件执行时(同⼀个代码块) 会把a, b两个变量量指向同⼀一个对象.)。所以结果会不一样 编码回顾:
1. ASCII : 最早的编码. ⾥面有英文大写字母, 小写字母, 数字, ⼀一些特殊字符. 没有中⽂文,8个01代码, 8个bit, 1个byte
2. GBK: 中⽂文国标码, ⾥面包含了了ASCII编码和中文常⽤用编码. 16个bit, 2个byte
3. UNICODE: 万国码, ⾥面包含了了全世界所有国家文字的编码. 32个bit, 4个byte, 包含了了ASCII
4. UTF-8: 可变⻓长度的万国码. 是unicode的⼀一种实现. 最⼩小字符占8位
1.英文: 8bit 1byte
2.欧洲文字:16bit 2byte
3.中文:24bit 3byte 解码和编码 不同编码之间存在转换的问题 tips:python2程序编码是ASCII 而python3位unicode
编码
a = "呵呵哈哈"
s = a.encode("utf-8")
# s = a.encode("gbk")
print(s)
解码
a = b'\xba\xc7\xba\xc7\xb9\xfe\xb9\xfe' #gbk
a1 = b'\xe5\x91\xb5\xe5\x91\xb5\xe5\x93\x88\xe5\x93\x88' #utf-8
s = a.decode("gbk")
s1 = a1.decode("utf-8")
print(s,s1) why:如何将GBK 转换为 utf-8? #先转成Unicode再转换为utf-8
a = b'\xba\xc7\xba\xc7\xb9\xfe\xb9\xfe' #gbk
s = a.decode("gbk") #转成unicode
b = s.encode("utf-8") #转成utf-8
print(b) #得到 utf-8 b'\xe5\x91\xb5\xe5\x91\xb5\xe5\x93\x88\xe5\x93\x88'
python基础之小数据池,is和==区别 编码问题的更多相关文章
- Python基础篇 -- 小数据池和再谈编码
小数据池 1. id() 通过id()可以查看到一个变量表示的值在内存中的地址 s = "Agoni" print(id(s)) # 2410961093272 2. is 和 = ...
- python基础之小数据池、代码块、编码和字节之间换算
一.代码块.if True: print(333) print(666) while 1: a = 1 b = 2 print(a+b) for i in '12324354': print(i) 虽 ...
- python基础之小数据池、代码块、编码
一.代码块.if True: print(333) print(666) while 1: a = 1 b = 2 print(a+b) for i in '12324354': print(i) 虽 ...
- python基础之小数据池
一,id,is,== 在Python中,id是什么?id是内存地址,比如你利用id()内置函数去查询一个数据的内存地址: name = '太白' print(id(name)) # 158583128 ...
- python 浅谈小数据池和编码
⼀. ⼩数据池 在说⼩数据池之前. 我们先看⼀个概念. 什么是代码块: 根据提示我们从官⽅⽂档找到了这样的说法: A Python program is constructed from code b ...
- python中的 小数据池 is 和 ==
1. 小数据池 一种数据缓存机制,也被称为驻留机制 小数据池针对的是:整数 , 字符 , 布尔值 .其他的数据类型不存在驻留机制 在python中对 -5 到256之间的整数会被驻留在内存中, 将一定 ...
- 百万年薪python之路 -- 小数据池和代码块练习
1.请用代码验证 "alex" 是否在字典的值中? info = {'name':'王刚蛋','hobby':'铁锤','age':'18',...100个键值对} info = ...
- 百万年薪python之路 -- 小数据池和代码块
1.小数据池和代码块 # 小数据池 -- 缓存机制(驻留机制) # == 判断两边内容是否相等 # a = 10 # b = 10 # print(a == b) # is 是 # a = 10 # ...
- python 运算符和小数据池
计算机可以进行的运算有很多种,可不只加减乘除这么简单,运算按种类可分为算数运算.比较运算.逻辑运算.赋值运算.成员运算.身份运算.位运算,今天我们暂只学习算数运算.比较运算.逻辑运算.赋值运算 算数运 ...
随机推荐
- 【2.0新特性】Spring Boot 2.0新特性
以Java 8 为基准 Spring Boot 2.0 要求Java 版本必须8以上, Java 6 和 7 不再支持. 内嵌容器包结构调整 为了支持reactive使用场景,内嵌的容器包结构被重构了 ...
- orcl 之 导入和导出(2)
删除用户表,表数据等内容 drop user username cascade 无法为表空间 spancename 中的段创建INITAL区处理办法 找到表空间存储的地方文件 select file_ ...
- (zhuan) Variational Autoencoder: Intuition and Implementation
Agustinus Kristiadi's Blog TECH BLOG TRAVEL BLOG PORTFOLIO CONTACT ABOUT Variational Autoencoder: In ...
- NLP--- How to install the tool NLTK in Ubuntu ?
NLP--- How to install the tool NLTK in Ubuntu ? 1. open the website of NLTK and download it. https: ...
- 常用处理数组、字符串API → forEach every some sort map filter slice split indexOf concat substring substr splice join toString replace
Object与Array的语法糖 var arr = [1,2,3]; // [] 是 new Array(1,2,3) 的语法糖(简写) var obj = {'name':2,'age':3}; ...
- ToString()格式和用法大全,C#实现保留两位小数的方法
C,货币,2.5.ToString("C"),¥2.50.D,十进制数,25.ToString("D5"),00025.E,科学型,25000.ToString ...
- 将tiff文件转化为jpg文件并保存
jar包准备 jai-codec和jai-core 主要过程 private boolean parseTifFile(FileItem item) { logger.info("----- ...
- 【Django】【环境配置】Mac
mysql环境配置:http://www.cnblogs.com/chenmo-xpw/p/6102933.html
- HTML学习笔记CSS
类选择器和ID选择器的区别 1id只能用一回,类可以循环使用 2可以使用类选择器词列表方法为一个元素同时设置多个样式.我们可以为一个元素同时设多个样式,但只可以用类选择器的方法实现,ID选择器是不可以 ...
- 在JAVA中返回类型使用泛型T和Object有什么区别?
最近在读jackson源码的时候发现有段代码返回类型写的是<T> T,而我自己一般写的是Object.上网搜了下这个语法糖,在stackoverflow上找到一个比较简单易懂的解释,搬运过 ...