Day6--Python--小数据池和再谈编码
一.小数据池
参考
目的:缓存我们字符串,整数,布尔值.在使用的时候不需要创建过多的对象
缓存: int, str, bool
int: 缓存范围 -5~256
str:
1. 长度小于等于1,直接缓存
2. 长度大于1. 字符串中如果只有数字, 字母, 下划线。 就会缓存
3. 乘以1。 同上, 乘以大于1的数。仅包含数字,字母下划线。最终长度小于等于20会缓存
4. 使用sys模块中的intern()缓存字符串 代码块的关系:如果在同一个代码块中。默认的整数和字符串还有布尔值都会进行缓存. 如果涉及计算。尊崇上面的规则
如果跨代码块,按照上面的规则执行的 内存地址 id() #对于赋值运算来说,指向的是一个内存地址,字典,列表,集合都一样.
a = 1000
print(id(a)) #内存的开辟是由解释器来完成的.
二. is 和 == 的区别
== 比较的是值 #双胞胎 == True
is 比较的是内存地址(是不是同一个地址) #双胞胎 is False lst1 = [1, 2, 3]
lst2 = [1, 2, 3]
print(lst1 == lst2)
print(lst1 is lst2) a = 'alex'
b = 'alex'
print(a == b)
print(a is b) #在python中,默认会把数字,字符串,布尔值进行缓存
只有不可变的对象才能缓存 1.当我们在控制台的时候(面试时只考在控制台cmd command 的情况)
1.int 数字及运算结果: -5~256之间的整数会被缓存
2.str 字符串:
长度小于等于1 会默认缓存
长度大于1 如果字符串中只有数字,字母,下划线 缓存
乘法得到的字符串,结果仅包含数字字母下划线最终长度不能超过20 缓存 手动指定缓存
from sys import intern()
intern() 指定缓存内容(必须是str,不能是int)
3.布尔值 2.py文件里,一个代码块内部,只会缓存int, str, bool 也有自己的小数据池,缓存的范围会比外面(控制台)的代码块的数据池要大
1.数字,都会缓存,运算结果在-5~256内缓存,超范围不缓存
2.字符串 默认的字符串(包括中文和符号)都缓存,如果有乘法,乘数为1缓存,乘数不为1遵循上方结论(数字,字母,下划,线个数)
3.布尔值 默认缓存 三.编码的补充 decode 和 encode
在python2中,默认的编码是ASCII
在python3中Unicode是可以使用的,默认用的就是Unicode,但代码用UTF-8来储存
1.为什么要编码. 把Unicode转换成UTF-8
#编码
s = '天气真好'
abc = s.encode('UTF -8') #encode 之后的结果是bytes类型,依然是原来的字符串
print(abc) # b'数据' 每个\x表示1个字节,1byte
#解码
abc = b'\xe5\xa4\xa9\xe6\xb0\x94\xe7\x9c\x9f\xe5\xa5\xbd'
s = abc.decode('UTF-8') #解码.用什么编码就用什么解码
print(s)
# print(b'\xe5\xa4\xa9\xe6\xb0\x94\xe7\x9c\x9f\xe5\xa5\xbd'.decode('utf-8'))
unicode => utf-8 encode("utf-8")
utf-8 => unicode decode("utf-8")
utf-8和gbk不能直接转换
bytes是字符串的另一种表示形式
Day6--Python--小数据池和再谈编码的更多相关文章
- Python基础篇 -- 小数据池和再谈编码
小数据池 1. id() 通过id()可以查看到一个变量表示的值在内存中的地址 s = "Agoni" print(id(s)) # 2410961093272 2. is 和 = ...
- day 006 小数据池和再谈编码
1.小数据池. 目的:缓存我们的字符串,整数,布尔值.在使用的时候不需要创建过多的对象 缓存: int str bool int 范围:-5~256 str: 1.长度小于等于1,直接缓存 2.长度大 ...
- python 全栈开发,Day6(is,小数据池,编码转换)
一.is a = 100 b = 100 print(a == b) print(a is b) 执行输出: TrueTrue 查看内存地址,使用id函数 print(id(a)) print(id( ...
- 小学生都能学会的python(小数据池)
小学生都能学会的python(小数据池) 1. 小数据池. 目的:缓存我们字符串,整数,布尔值.在使用的时候不需要创建过多的对象 缓存:int, str, bool. int: 缓存范围 -5~256 ...
- python 小数据池,代码块, is == 深入剖析
python小数据池,代码块的最详细.深入剖析 一. id is == 二. 代码块 三. 小数据池 四. 总结 一,id,is,== 在Python中,id是什么?id是内存地址,那就有人问了, ...
- Python小数据池,代码块
今日内容一些小的干货 一. id is == 二. 代码块 三. 小数据池 四. 总结 python小数据池,代码块的最详细.深入剖析 一. id is == 二. 代码块 三. 小数据池 四. ...
- python -- 小数据池 is和 == 再谈编码
1.小数据池 python程序是由代码块构成的,一个代码块的文本作为python程序的执行单元. 代码块:一个模块,一个函数,一个类,甚至一个command命令都是一个代码块,一个文件也是一个代码块, ...
- python小数据池 is和 == 再谈编码
1. 小数据池, id() 小数据池针对的是: int, str, bool 在py文件中几乎所有的字符串都会缓存. id() 查看变量的内存地址 2. is和==的区别 is 比较的是内存地址 == ...
- 浅谈Python小数据池
什么是小数据池 小数据池是python中提高效率的一种方式,固定数据类型的相同值使用同一内存地址. id 用于获取开辟空间的内存地址 代码块 一个文件,一个模块,一个函数,一个类,终端中的每一行代码都 ...
随机推荐
- table index & delete array item
table index & delete array item https://www.iviewui.com/components/table#ZDYLMB 编辑 row = { " ...
- Javascript 实现复制(Copy)动作方法大全
一.实现点击按钮,复制文本框中的的内容 <script type="text/javascript"> function copyUrl2() { var Url2=d ...
- change safari user agent
defaults write com.apple.safari customuseragent '"mozilla/5.0 (iphone; cpu iphone os 8_1 like m ...
- 【深入Java虚拟机】之一:Java内存模型
[深入Java虚拟机]之:Java内存区域与内存溢出 内存区域 Java虚拟机在执行Java程序的过程中会把他所管理的内存划分为若干个不同的数据区域.Java虚拟机规范将JVM所管理的内存分为以下几个 ...
- 解决vscode egg调试出现: this socket has been ended by other party【转】
如果是最新的1.22 方案一 回退版本到1.21.1 https://code.visualstudio.com/updates/v1_21 方案二 退而求其次, 更改debug配置, 待官方或egg ...
- 第三方登陆——QQ登陆详解
申请地址 QQ互联:https://connect.qq.com/index.html 腾讯开放平台:https://open.tencent.com/ 注册账号 登陆 进入QQ互联,点击登陆 资料填 ...
- LeetCode:152_Maximum Product Subarray | 最大乘积连续子数组 | Medium
题目:Maximum Product Subarray Find the contiguous subarray within an array (containing at least one nu ...
- Android Studio 导致C盘过大
转载:http://blog.csdn.net/u010794180/article/details/48004415 这是一个可看可不看的文章,不可看是对与那些 C盘 容量不紧张的人而言:而我是属于 ...
- 大学实验3指导:利用单链表实现A-B
实验目的:深入理解单链表的建立及操作 实验内容: 1.建立单链表A与B 2.实现主要的函数,查找.插入.删除等 3.实现操作A-B 步骤1:包含必要的函数库,对结构体LNode中的抽象数据类型Elem ...
- monkey测试的脚本
monkey测试脚本编写思路: 配置文件: 1.测试安装包路径 2.执行monkey脚本的次数 3.执行monkey的点击数 4.包名 读取配置文件: 1.配置文件有一个section 2.读取配置文 ...