一.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和==,小数据池)的更多相关文章

  1. python2与python3的区别 ,小数据池 bytes 类型

    一.python2和3的区别 在python3中 在python2中 print('ab')方式打印内容()括号是必须要有的.   print 'ab' 可以加可以不加. 只有range   有ran ...

  2. id,is的用法,小数据池的概念及编码知识进阶

    一:id 查询内存地址 name = 'alex' print(id(name)) li = [1,2,3] print(id(li)) 二:is  判断的是内存地址 name1 = 'alex@' ...

  3. 07_Python变量内存地址、小数据池

    一.变量在内存中的地址 变量:用来标识(identify)一块内存区域.为了方便表示内存,我们操作变量实质上是在操作变量指向的那块内存单元.编译器负责分配.我们可以使用Python内建函数id()来获 ...

  4. Python二次编码、小数据池之心照神交

    二次编码.解码.小数据池: encode(str:编码):参数编码方式,返回字节码. str_1 = "编码" str_2 = str_1.encode("utf-8&q ...

  5. day4-python基础-小数据池以及深浅copy浅讲

    今天的目录是 1.小数据池 2.深浅copy 正文开始 1.小数据池 在说明今天的内容前,先说明一个在今天重复用到的一个知识点 ###比较’=’俩边的数据是否完全相同,以及判断一个对象的内存地址是否完 ...

  6. Python小数据池和字典操作

    小数据池 #id 查看内存地址 #多个代码块可以使用小数据池 #一个代码块中有一个问题,就是重复使用 #数字 -5~256 #字符串 字符串 乘法总数长度不能超过20, 0,1除外 #不能有特殊字符 ...

  7. python基础之小数据池、代码块、编码和字节之间换算

    一.代码块.if True: print(333) print(666) while 1: a = 1 b = 2 print(a+b) for i in '12324354': print(i) 虽 ...

  8. python之路day06--python2/3小区别,小数据池的概念,编码的进阶str转为bytes类型,编码和解码

    python2#print() print'abc'#range() xrange()生成器#raw_input() python3# print('abc')# range()# input() = ...

  9. range 小数据池介绍

    1.range 2.小数据池 1. range 范围 [起始位置:终止位置:步长]range(起始位置,终止位置,步长) #顾头不顾尾 3.小数据池 小数据池,也称为小整数缓存机制,或者称为驻留机制等 ...

随机推荐

  1. @SuppressWarnings https://www.cnblogs.com/fsjohnhuang/p/4040785.html

    一.前言 编码时我们总会发现如下变量未被使用的警告提示: 上述代码编译通过且可以运行,但每行前面的“感叹号”就严重阻碍了我们判断该行是否设置的断点了.这时我们可以在方法前添加 @SuppressWar ...

  2. linux下vscode备忘

    vscode如何自定义,如何方便地编写c/c++vscode支持vim.sublime快捷键,在设置->keymap可以安装相应插件vscode默认的快捷键支持自定义,打开keyboard sh ...

  3. redis 设置密码 和 redis.config文件

  4. 信息收集【采集点OWASP CHINA】网址http://www.owasp.org.cn/

    以下部分源于 安全家 http://www.anquanjia.net.cn/newsinfo/729480.html 资源虽多,优质却少.不要被信息海迷惑的心智,新人要想入门,除了优质的系统教学资源 ...

  5. vue-router路由如何实现传参

    tip: 用params传参,F5强制刷新参数会被清空,用query,由于参数适用路径传参的所以F5强制刷新也不会被清空.(传参强烈建议适用string) 也可以选用sessionstorage/lo ...

  6. airtestUI简单操作

    touch 判断坐标位置 如touch((500, 600), duration=1) swipe 滑动位置 wait 等待画面出现 exists 判断画面中是否存在某个图片 test 调用输入法,输 ...

  7. python基础-3 集合 三元运算 深浅拷贝 函数 Python作用域

    上节课总结 1 运算符 in 字符串 判断  : “hello” in "asdasfhelloasdfsadf" 列表元素判断:"li" in ['li', ...

  8. [Python3 填坑] 007 多才多艺的 len()

    目录 1. print( 坑的信息 ) 2. 开始填坑 (1) 总的来说 (2) 举例说明 (3) 后记 1. print( 坑的信息 ) 挖坑时间:2019/01/10 明细 坑的编码 内容 Py0 ...

  9. [Python3] 013 集合:你不能两次进入同一个集合

    目录 0. 集合的独白 1. 集合的创建 2. 集合的特性 (1) 概述 (2) 少废话,上例子 3. 集合的遍历 4. 集合内涵 5. 集合的内置方法 6. 可供集合使用的一些方法/函数 (1) 又 ...

  10. Web API 入门三(参数绑定)

    学到现在,感觉到微软的.NET各种框架和模型基础大致都差不多,所以,这部分内容大致和MVC部分差不多.在学习参事绑定之前,我们肯定要知道Controller(即控制器)是啥干啥的. 其实,Contro ...