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 运算符和小数据池
计算机可以进行的运算有很多种,可不只加减乘除这么简单,运算按种类可分为算数运算.比较运算.逻辑运算.赋值运算.成员运算.身份运算.位运算,今天我们暂只学习算数运算.比较运算.逻辑运算.赋值运算 算数运 ...
随机推荐
- Forms Authentication and Role based Authorization: A Quicker, Simpler, and Correct Approach
https://www.codeproject.com/Articles/36836/Forms-Authentication-and-Role-based-Authorization Problem ...
- Shell 基础知识和总结
调试脚本 检查脚本语法错误 bash -n /path/to/some_script 调试执行 bash -x /path/to/some_script shell里的变量 本地变量:只对当前shel ...
- (zhuan) Speech and Natural Language Processing
Speech and Natural Language Processing obtain from this link: https://github.com/edobashira/speech-l ...
- 【ASP.NET】The CodeDom provider type “Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider” could not be located
一般是asp.net的项目在启动的时候会报这个错误. 页面显示成: 我推测的原因是由于project的build的输出属性改了, 非bin目录下, 导致这个问题. 解决这个问题的方案有两个: 1. 改 ...
- mathType换行等号对齐
例如: 输入步骤: (1) (2) (3) (4) 事实上,[ctrl+;]表示的是插入了一个对齐标记符.
- python + eclipse +pydev
本文重点介绍使用Eclipse+pydev插件来写Python代码, 以及在Mac上配置Eclipse+Pydev 和Windows配置Eclipse+Pydev 编辑器:Python 自带的 ID ...
- C++中substr函数的用法
#include<iostream> #include<string> using namespace std; int main(){ string str("12 ...
- 理解git的分支原理,更好地使用git
文章内容转载于git-scm. 部分内容涉嫌枯燥 一.git分支概念 几乎每一种版本控制系统都以某种形式支持分支.使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作.在很多版本控 ...
- 性能跃升50%!解密自主研发的金融级分布式关系数据库OceanBase 2.0
小蚂蚁说: 相信大家对蚂蚁金服自主研发的金融级分布式关系数据库OceanBase的故事不再陌生了.在刚刚过去的2018年天猫双11中,成交额2135亿再次创造了新纪录,而支撑今年双11的支付宝核心链路 ...
- 【三】php 数组
数组 1.数字索引数组:array('a','b','c'); 2.访问数组内容 $arr[下标] 3.新增数组元素 $arr[下标]=内容 4.使用循环访问数组 //针对数字索引 $arr=arr ...