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 用于获取开辟空间的内存地址 代码块 一个文件,一个模块,一个函数,一个类,终端中的每一行代码都 ...
随机推荐
- mysql 分库分表备份脚本
#!/bin/bash USER=root #用户 PASSWORD=123456 #密码 MYSQL_PATH=127.0.0.1 #地址 MYSQL_BIN=/bin/mysql MYSQL_DU ...
- linux硬盘的分区、格式化、挂载以及LVM
linux硬盘的分区.格式化.挂载以及LVM 多块硬盘的组合: 硬盘分两种:ide和scsi. ide硬盘: /dev/hda 第一块IDE硬盘 /dev/hdb 第二块IDE硬盘 ... /de ...
- Python学习之路————Day03
今日内容: 1.IDE开发环境的安装 2.基本数据类型的使用 3.运算符 一. 算术运算符: 比较运算符 赋值运算符 逻辑运算符 身份运算符:is比较的是id 而==比较的是值 二.基本数据类型 为什 ...
- Process 模块的方法
join from multiprocessing import Process import time, os def task(name): print('%s is running' % nam ...
- CodeForces - 1051D Bicolorings(DP)
题目链接:http://codeforces.com/problemset/problem/1051/D 看了大佬的题解后觉着是简单的dp,咋自己做就做不来呢. 大佬的题解:https://www.c ...
- Centos使用虚拟环境创建python django工程
本地环境 通常我们登录就是后就是本地环境 本地环境下查看pip安装了那些包 pip3 list 可以看到本地环境下我们安装的是django1.11.16版本,现在我有个项目要使用django 2.0以 ...
- a标签实现锚点功能
a标签实现锚点功能 <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...
- web scraper——安装【一】
准备工作 工欲善其事必先利其器,既然是要安装web scraper一些***的工具是必然不可缺少的,如果没有的话,先下载个蓝灯用用吧. 蓝灯最新版下载地址 下载安装完成后双击打开即可,这时候会弹出一个 ...
- Codeforces 768B B. Code For 1
参考自:https://www.cnblogs.com/ECJTUACM-873284962/p/6423483.html B. Code For 1 time limit per test:2 se ...
- MT【301】值域宽度
(2015浙江理科)已知函数$f(x)=x^2+ax+b,(a,b\in R)$.记$M(a,b)$是$|f(x)|$在区间$[-1,1]$上的最大值.(1)证明:当$|a|\ge2$时,$M(a,b ...