is和==的区别,小数据池,编码
1 is 和 == 的区别
- 1> id( )表示我们可以通过它来查到在内存中的地址
s = "alex"
print(id(s)) #
lst = [1,2, 4]
print(id(lst)) #
lst = [1, 2, 4] # 即使定义两个一样结果的列表,操作系统都会在内存中开辟2块内存地址
print(id(lst)) #
tup = (1, 2)
print(id(tup)) #
tup1 = (1, 2) # 元组亦是.
print(id(tup1)) #
- 总结:小数据池概念的引入把我们使用过的数据储存在小数据池中,供其他变量使用
- 2> 小数据池包含:int ,str ,bool
- 一般情况下我们定义的字符串都会被放在小数据池中,在使用字符串的时候,python会帮我们把字符串缓存,在下次使用的是后直接只想这个字符串即可,这样可以节省很多空间.
- 3> is 和id( )的联系
- is比较的是id()计算出来的结果,由于,由于id()帮我们查的是数据(内容)的内存地址,那么is就是比较数据(内容)的内存地址
- 最终,我们可以通过is来比较两个数据(内容)是否为同一个对象.
- ==是比较左右两端的数据(内容)是否一样
- is是比较的两个数据(内容)内存地址是否一样
2,编码的补充:
- 在python3中,程序运行阶段,使用的是unicode码,因为是万国码,所以什么码都能识别,所以在使用python3的时候是把unicode的代码转换成UTF-8的代码.
- 内存使用的是unicode,硬盘和网络传输用的是UTF-8或者GBK.
- bytes的表现形式:
- >英文b"alex"英文的表现形式和字符串没有设么区别
- >中文 b'\xe4\xb8\xad'这时一个汉字UYF-8的bytes表现形式
- encode(内容),编码,获取到的是编码之后的结果."bytes".........................格式是.encode("utf-8"或者,"GBK")
- decode(内容),解码,把bytes变成我们熟悉的字符串.................................格式是.decode("utf-8"或者,"GBK")
# utf-8的编码以及解码
s = "中"
# 编码:
print(s.encode("utf-8")) # b'\xe4\xb8\xad'
# 解码:
print(b'\xe4\xb8\xad'.decode("utf-8")) # GBK的编码以及解码
s = "中"
# 编码:
print(s.encode("gbk")) # b'\xd6\xd0'
# 解码:
print(b'\xd6\xd0'.decode("gbk")) # 中
小结:
- GBK的bytes不能直接转化为UTF-8的bytes,需要先转化为unicode再转化为UTF-8的bytes
- 即.decode("UTF-8")---------.encode("GBK")----------.decode("GBK").
is和==的区别,小数据池,编码的更多相关文章
- is 与 == 的区别;小数据池; 编码与解码
1, is 与 == 的区别 == 比较的是两边的值 is 比较的是两边的地址 id () 2,小数据池(在终端中) 数字小数据池的范围 -5 ~ 256 字符串中如果有特殊字符他们的内存地址 ...
- Python基础学习Day6 is id == 区别,代码块,小数据池 ---->>编码
一.代码块 Python程序是由代码块构造的.块是一个python程序的文本,他是作为一个单元执行的. 代码块:一个模块,一个函数,一个类,一个文件等都是一个代码块. 而作为交互方式输入的每个命令都是 ...
- python --- 06 小数据池 编码
一.小数据池, id() 进行缓存 1.小数据池针对的是: int, str, bool 2.在py文件中几乎所有的字符串都会缓存. 在cmd命令窗口中几乎都不会缓存 不同的解释器有不同 ...
- python之路---06 小数据池 编码
二十二.小数据池, id() 进行缓存 1.小数据池针对的是: int, str, bool 2.在py文件中几乎所有的字符串都会缓存. 在cmd命令窗口中几乎都不会缓存 不同的解释器有 ...
- python之路(内存,小数据池,编码等)
代码块: python真正的代码块:一个模块,一个函数,一个类,一个文件等都是一个代码块. 但是,在python终端交互模式下,每一条代码都是一个代码块 python在同一个代码块中的变量,初始化对象 ...
- python 全栈开发,Day6(is,小数据池,编码转换)
一.is a = 100 b = 100 print(a == b) print(a is b) 执行输出: TrueTrue 查看内存地址,使用id函数 print(id(a)) print(id( ...
- is ==小数据池编码解码
== 比较 比较的是两边的值 is 比较 比较的是内存地址 判断两个东西指向的是不是同一个对象 取内存地址 id() 小数据池 ...
- python之路--小数据池,再谈编码,is和 == 的区别
一 . 小数据池 # 小数据池针对的是: int, str, bool 在py文件中几乎所有的字符串都会缓存. # id() 查看变量的内存地址 s = 'attila' print(id(s)) 二 ...
- python基础之小数据池,is和==区别 编码问题
主要内容 小数据池,is和==区别 编码问题 小数据池 一种缓存机制,也称为驻留机制,是为了能更快提高一些字符串和整数的处理速度is 和 == 的区别 == 主要指对变量值是否相等的判断,只要数值相同 ...
随机推荐
- 南邮CTF--bypass again
南邮CTF--bypass again 提示:依旧弱类型,来源hctf 解析: 源代码: if (isset($_GET['a']) and isset($_GET['b'])) { if ($_G ...
- C语言学习13
快速排序 //快速排序 #include <stdio.h> void quicksort(int a[], int left, int right); void main() { ] = ...
- 一个关于vue+mysql+express的全栈项目(四)------ sequelize中部分解释
一.模型的引入 引入db.js const sequelize = require('./db') sequelize本身就是一个对象,他提供了众多的方法, const account = seque ...
- tomcat常见设置
1.请求日志 tomcat 统一访问日志记录,添加请求响应时间 <Host name="localhost" appBase="webapps" unpa ...
- linux进程按启动时间排序命令
show me the code... ps aux --sort=start_time|grep Full|grep -v grep
- 2016阿里校招python研发面试
一面: 面:说说你们学校的主修课程. 学校开的全是尼玛java课,这个我是想了有一会的. 面:看你简历写了会jquery,来问你个简单的jquery问题 :jQuery支不支持css引入. 呵呵 面: ...
- Python的另一种开发环境--Anaconda中的Spyder
本文作者LucyGill,转载请注明出处(虽然我觉得并不会有人转载). 刚开始学Python的时候,我用的是其自带的idle(安装Python后,在开始菜单里可以找到),后来发现在eclipse中设置 ...
- 【2018 Multi-University Training Contest 4】
01: 02:https://www.cnblogs.com/myx12345/p/9407551.html 03: 04:https://www.cnblogs.com/myx12345/p/940 ...
- [Bzoj3631][JLOI2014]松鼠的新家 (树上前缀和)
3631: [JLOI2014]松鼠的新家 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 2350 Solved: 1212[Submit][Sta ...
- 转:Linux中的内存管理
前一段时间看了<深入理解Linux内核>对其中的内存管理部分花了不少时间,但是还是有很多问题不是很清楚,最近又花了一些时间复习了一下,在这里记录下自己的理解和对Linux中内存管理的一些看 ...