python之路day06--python2/3小区别,小数据池的概念,编码的进阶str转为bytes类型,编码和解码
python2
#print() print'abc'
#range() xrange()生成器
#raw_input() python3
# print('abc')
# range()
# input()
= 赋值
== 比较值是否相等
is 比较的是内存地址是否一致,返回True or False
id(内容) 返回内容
li1 =[1,2,3]
li2 =li1 #赋值
print(li1 is li2) #True
print(id(li1),id(li2))#48358464 48358464
小数据池
小数据池,也称为小整数缓存机制,或者称为驻留机制等等,博主认为,只要你在网上查到的这些名字其实说的都是一个意思,叫什么因人而异。
那么到底什么是小数据池?他有什么作用呢?
大前提:小数据池也是只针对 int(float),str,bool。
小数据池是针对不同代码块之间的缓存机制!!!
按数据类型划分
数字,字符串 ————> 小数据池的概念,在一定的范围内,共用一个内存地址,节省内存空间
数字的范围 -5-256
字符串:1/不能含有特殊字符
2/str*20 还是同一个地址,str*21 后都是两个地址
i1 =2
i2 =2
print(id(i1),id(i2)) #1779386016 1779386016 i1 =300
i2 =300
print(id(i1),id(i2)) #58219664 58219664 i1 =300
i2 =i1 #赋值运算地址是一样的
print(id(i1),id(i2)) # 51010704 51010704
剩下的list,dict,tuple,set 都不是一个地址,没有小数据池的概念
编码的进阶 str--bytes 类型
ascii A:00000010 8位 用一个字节来表示一个字母,字符 unicode A:00000010 00000001 00000010 00000010 32位 4个字节
中:00000010 00000001 00000010 00000010 32位 4个字节
utf-8 : A:00000010 8位 一个字节
中:00000010 00000001 00000010 24位 3个字节 gbk: A: 00000110 8位一个字节
中:00000010 00000110 16位2个字节 1/各个编码之间的二进制,是不能互相识别的,会产生乱码
2/文件的存储,传输,不能是unicode(只能是utff-8,gbk,ascii等)。因为unicode用4个字节表示一个字符,占用空间太大,传输慢。
py3:
文本 str在内存中是用unicdoe编码的。 bytes类型:也是一种数据类型,是一种特殊的。是以(utff-8,gbk,ascii等编码的)
str与bytes 方法都差不多,只是内存中编码不同。 对于英文:
str: 表现形式 s ='alex'
编码方式: 010101010 用的是unicode编码 bytes:表现形式:s = b'alex'
编码形式:010101010 用的是utff-8,gbk,ascii等编码的
ps: s ='alex'
s1 = b'alex'
print(type(s),type(s1)) #<class 'str'> <class 'bytes'>
对于中文:
str: 表现形式 s ='中国'
编码方式: 010101010 用的是unicode编码 bytes:表现形式:s = b'x\e91\e91\e01\e21\e31\e32' 中文显示不出来,所以不用bytes,用str
编码方式:010101010 用的是utff-8,gbk,ascii等编码的
ps: s ='中国'
s1 = '中国' #python3中bytes类型中文表示不出来。
print(type(s),type(s1)) #<class 'str'> <class 'bytes'>
encode编码,如何将str-->bytes类型,方便传输存储
s1 = 'alex'
s11 = s1.encode('utf-8') #可以设置编码方式
print(s11,type(s11)) #b'alex' <class 'bytes'> s2 = '中国'
s22 = s2.encode('utf-8')
print(s22,type(s22)) #b'\xe4\xb8\xad\xe5\x9b\xbd' <class 'bytes'>
字符转编码操作
unicode相当于一个中介,utf-8要转为GBK,要先decode('utf-8')解码成unicode(--告诉unicode你是什么编码--),后在encode('gbk')编码为GBK。
encode编码、decode解码

#str --->byte encode 编码
# s = '二哥'
# b = s.encode('utf-8')
# print(b)
# #byte --->str decode 解码
# s1 = b.decode('utf-8')
# print(s1)
# s = 'abf'
# b = s.encode('utf-8')
# print(b)
# #byte --->str decode 解码
# s1 = b.decode('gbk')
# print(s1)
python之路day06--python2/3小区别,小数据池的概念,编码的进阶str转为bytes类型,编码和解码的更多相关文章
- Python 3中的str和bytes类型
Python3 中的str和bytes类型 Python3最重要的新特性之一是:对字符串和二进制数据流做了明确的区分.文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示.Pyt ...
- id,is的用法,小数据池的概念及编码知识进阶
一:id 查询内存地址 name = 'alex' print(id(name)) li = [1,2,3] print(id(li)) 二:is 判断的是内存地址 name1 = 'alex@' ...
- Python之路Day06
小数据池 == 判断两个值是否相等 is -- 是,判断两边的内存地址是否相同 a=10 b=10 print(a is b) id() -- 查看内存地址 代码块 一个py文件,一个函数,一个模块, ...
- Python str 与 bytes 类型(Python2/3 对 str 的处理)
本文均在 Python 3 下测试通过,python 2.x 会略有不同. 1. str/bytes >> s = '123' >> type(s) str >> ...
- Python2和3版本对str和bytes类型的处理
python2中字符串分为2种类型: 字节类型:str,字节类型,通过decode()转化为unicode类型 unicode类型:unicode ,通过encode转化为str字节类型 字节类型 和 ...
- 初学python之路-day06
每天一篇总结,今天学习了大概有深浅拷贝,元组类型,字典类型与集合类型.第一次感觉有点难度,需要花费多点时间来掌握. 深浅拷贝,分为值拷贝.浅拷贝.深拷贝. ls = [1, 'abc', [10]] ...
- Python之路第十一天,高级(3)-线程池
线程池 简单的线程池的实现: import queue import threading import time class ThreadPool(object): def __init__(self ...
- Python str 与 bytes 类型 之间的转换
bytes:字节数组,通常用它可以描述 “一个字符串”,只不过该字符串是 “bytes类型”,所以容易与str类型混淆,他们二者之间的转换: https://blog.csdn.net/lanchu ...
- python的小数据池和深浅拷贝
小数据池 一种数据缓存机制,也称驻留机制 在同一代码块,相同的值不会开辟新的内存 特殊字符除外 小数据池只针对:在控制台时! 数字 :-5到256间的整数会被缓存 布尔值:都会缓存8 字符串 小于等于 ...
随机推荐
- 在本地硬盘安装WinPE系统,实现UEFI引导,摆脱U盘
之前装系统一直用U盘装PE后再装系统,这次直接想把PE系统直接装在本地某个分区中,普通的PE制作工具只能直接装在一个硬盘里没法装在某个分区,百度发现没有一篇类似的文章,只能自己想办法了.目前的PE都支 ...
- 5.6Python数据处理篇之Sympy系列(六)---矩阵的操作
目录 目录 前言 (一)矩阵的创建-Matrix() 1.说明: 2.源代码: 3.输出: (二)常用的构造矩阵 1.说明: 2.源代码: 3.输出: (三)基本操作 1.说明: 2.源代码: 3.输 ...
- LeetCode算法题-Longest Continuous Increasing Subsequence(Java实现)
这是悦乐书的第286次更新,第303篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第154题(顺位题号是674).给定未排序的整数数组,找到最长连续增加子序列的长度.例如 ...
- 英语口语练习系列-C18-Wildest Dreams
词汇复习 actor 演员 afternoon 下午 alive 活着的 apple 苹果 adjective 形容词 air 空气 animal 动物 April 四月 adult 成年人 airp ...
- Flink流处理的时间窗口
Flink流处理的时间窗口 对于流处理系统来说,流入的消息是无限的,所以对于聚合或是连接等操作,流处理系统需要对流入的消息进行分段,然后基于每一段数据进行聚合或是连接等操作. 消息的分段即称为窗口,流 ...
- Python从入门到放弃Day01
Py的第一天,无非是讲一些关于电脑的一些常见的基本常识,硬件之类的cpu啊.硬盘啊.显卡啊.内存条啊什么的,之后就还有一些除了windows之外的操作系统,我之前是学网络的,Readhat也学了一部分 ...
- Docker(1):CentOS7 安装Docker
1.查看系统内核,docker要求系统的内核版本高于3.10 # uname -r 2.升级yum包,确保最新 # yum update 3.安装所需要依赖包 # yum install - ...
- 替换空格[by Python]
题目: 请实现一个函数,将一个字符串中的空格替换成“%20”.例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. 1.使用python自带的repla ...
- P4554 小明的游戏
SPFA板子题 #include <stdio.h> #include <string.h> #define Clean(X,K) memset(X,K,sizeof(X)) ...
- IDEA+API && SPI
JAVA中API和SPI的区别:https://blog.csdn.net/quanaianzj/article/details/82500019
