Python_006(is和==,小数据池)
一.is和==的区别
1.id()方法,可以查看一个变量的内存地址
lst = ["周杰伦", "燃哥"]
lst1 = ["周杰伦", "燃哥"]
print(id(lst))
print(id(lst1))
#输出结果:2016969304136
2016999144008
#可以看出地址不一致 s = "燃哥"
s1 = "燃哥"
# 小数据池. 会对字符串进行缓存, 为了节省内存
print(id(s))
print(id(s1))
#输出结果:2666201022288
2666201022288
#地址是一致的
总结:
1)python中是有一个小数据池的,如果你单纯的定义一个字符串,那么一般情况下都是会被添加到小数据池中
python会帮我们把字符串进行缓存,在下次使用的时候直接指向这个字符串即可,可以节省很多空间,
2)小数据池也可对数字进行缓存,但也是有范围的-5~256是会被加的,超出则不加;
3)对于字符串:a:是纯字母和下划线.那么这个对象会被添加到小数据池,中文也是特殊字符,字符串中带有中文是不会被添加的
b:带有特殊字符的. 那么不会被添加到小数据池. 每次都是新的;例如:s1='@alxt'和s2='@alxt'地址不一样
c:如果是单一字母*n的情况.'a'*20,在20个单位内是可以的.超过20个单位就不会添加到小数据池中
2.== 双等表示的是判断是否相等,注意,这个双等比较的是具体的值,而不是内存地址
3.总结:is比较的是内存地址
==比较的是值
二.编码的补充
1.在python2默认使用的是ASCII码,所以不支持中文,如果想要在python2中更改编码,需要在文件的开始编写:
-*- encoding:utf-8 -*
2.在python3中:内存中使用的是unicode码
3.1 ASCII:最早的编码,没有中文,8个二进制位,一个字节;
3.2 GBK:中文国标码,里面包含ASCII编码和中文常用编码,16个二进制位(bit),2个字节;
3.3 Unicode:万国码,包含了全世界所有国家的文字的编码,32个二进制位,4个字节;
3.4 UTF-8:可变长度的万国码,是unicode的一种实现,英文:8位,1字节; 欧洲文字:16位,2字节; 中国文字:24位,3字节;
bytes的表现形式:英文:b"alex" 英文的表现形式和字符串没什么两样; 中文:b'\xe4\xb8\xad一个字的utf-8表现形式;
s = "alex"
bs = s.encode("GBK")
cs= s.encode("utf-8")
print(bs)
print(cs)
#输出结果:b'alex'
b'alex'
GBK => utf-8:
bs = b'\xb6\xf6\xc1\xcb\xc3\xb4'
# 先解码成unicode字符串
s = bs.decode("GBK")
print(s)
# 在把字符串编码成UTF-8
bss = s.encode("utf-8")
print(bss)
#输出结果:饿了么
b'\xe9\xa5\xbf\xe4\xba\x86\xe4\xb9\x88'
Python_006(is和==,小数据池)的更多相关文章
- python2与python3的区别 ,小数据池 bytes 类型
一.python2和3的区别 在python3中 在python2中 print('ab')方式打印内容()括号是必须要有的. print 'ab' 可以加可以不加. 只有range 有ran ...
- id,is的用法,小数据池的概念及编码知识进阶
一:id 查询内存地址 name = 'alex' print(id(name)) li = [1,2,3] print(id(li)) 二:is 判断的是内存地址 name1 = 'alex@' ...
- 07_Python变量内存地址、小数据池
一.变量在内存中的地址 变量:用来标识(identify)一块内存区域.为了方便表示内存,我们操作变量实质上是在操作变量指向的那块内存单元.编译器负责分配.我们可以使用Python内建函数id()来获 ...
- Python二次编码、小数据池之心照神交
二次编码.解码.小数据池: encode(str:编码):参数编码方式,返回字节码. str_1 = "编码" str_2 = str_1.encode("utf-8&q ...
- day4-python基础-小数据池以及深浅copy浅讲
今天的目录是 1.小数据池 2.深浅copy 正文开始 1.小数据池 在说明今天的内容前,先说明一个在今天重复用到的一个知识点 ###比较’=’俩边的数据是否完全相同,以及判断一个对象的内存地址是否完 ...
- Python小数据池和字典操作
小数据池 #id 查看内存地址 #多个代码块可以使用小数据池 #一个代码块中有一个问题,就是重复使用 #数字 -5~256 #字符串 字符串 乘法总数长度不能超过20, 0,1除外 #不能有特殊字符 ...
- python基础之小数据池、代码块、编码和字节之间换算
一.代码块.if True: print(333) print(666) while 1: a = 1 b = 2 print(a+b) for i in '12324354': print(i) 虽 ...
- python之路day06--python2/3小区别,小数据池的概念,编码的进阶str转为bytes类型,编码和解码
python2#print() print'abc'#range() xrange()生成器#raw_input() python3# print('abc')# range()# input() = ...
- range 小数据池介绍
1.range 2.小数据池 1. range 范围 [起始位置:终止位置:步长]range(起始位置,终止位置,步长) #顾头不顾尾 3.小数据池 小数据池,也称为小整数缓存机制,或者称为驻留机制等 ...
随机推荐
- Mac012--FinalShell SSH工具
Mac--FinalShell SSH工具 FinalShell SSH工具,服务器管理,远程桌面加速软件,支持Windows,Mac OS X,Linux FinalShell,国货产品,同类产品有 ...
- 压缩图片工具类,压缩100KB以内拿走直接用
最近遇到自拍上传图片过大问题,很烦恼,所以自己写了一个压缩图片的工具类使用,自测效果很不错,可以压缩到KB以内,像素还可以分辨清晰 下面Java代码奉上: import lombok.extern.s ...
- Python3数据分析与挖掘建模实战 学习 教程
Python3数据分析与挖掘建模实战 学习 教程 Python数据分析简介Python入门 运行:cmd下"python hello.py" 基本命令: 第三方库安装Windows ...
- TCP通信 - 服务器开启多线程与read()导致服务器阻塞问题
TCP通信的文件上传案例 本地流:客户端和服务器和本地硬盘进行读写,需要使用自己创建的字节流 网络流:客户端和服务器之间读写,必须使用Socket中提供的字节流对象 客户端工作:读取本地文件,上传到服 ...
- [Python3 练习] 009 利用列表隐藏并找到有用的信息
题目:利用列表隐藏并找到有用的信息 (1) 描述 1) 题源 鱼 C 论坛中"小甲鱼"老师出的题 链接地址:第020讲:函数:内嵌函数和闭包 | 课后测试题及答案 2) 修改 题中 ...
- 本地SVN服务器的搭建(WINDOWS环境)
1.下载安装 VISUALSVN SERVER 1.1下载地址:https://www.visualsvn.com/server/download/ 1.2下载完成后,双击安装. 2.下载安装 Tor ...
- 01背包(第k优解)
Bone Collector II Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- [LOJ2736] [JOISC 2016 Day 3] 回转寿司 (分块+堆)
[LOJ2736] [JOISC 2016 Day 3] 回转寿司 (分块+堆) 题面 给出一个有n 个点的环,环上各点有一个初始权值 \(a_i\) 给出 Q 个询问,每次询问给出一个区间 [l,r ...
- webpack搭建vue项目开发环境【文档向学习】
为何有这篇文章 各个社区已经有无数篇帖子介绍如何使用webpack搭建前端项目,但无论是出于学习webpack的目的还是为了解决工作实际需要都面临着一个现实问题,那就是版本更新.别人的帖子可能刚写好版 ...
- FB相关
1.传包过程的错误 (中文提示)游戏必须通过我们的 CDN 引用我们支持的 SDK (英文提示)Games must reference one of our supported SDKs via o ...