小学生都能学会的python(小数据池)
小学生都能学会的python(小数据池)
1. 小数据池.
目的:缓存我们字符串,整数,布尔值。在使用的时候不需要创建过多的对象
缓存:int, str, bool、
int: 缓存范围 -5~256
str:
1. 长度小于等于1,直接缓存
2. 长度大于1. 字符串中如果只有数字, 字母, 下划线。 就会缓存
3. 乘以1。 同上, 乘以大于1的数。仅包含数字,字母下划线。最终长度小于20会缓存
4. 使用sys模块中的intern()缓存字符串
代码块的关系:如果在同一个代码块中。默认的整数和字符串还有布尔值都会进行缓存. 如果涉及计算。尊崇上面的规则
如果跨代码块,按照上面的规则执行的
# a = [1,2,2,13,123,123,12,3,12,3,12,312,3,12,32,13,12,3,21]
# b = a # 明天深浅拷贝 # 内存地址 id()
# print(id(a))
# print(id(b)) # a = 1000
# print(id(a)) # 内存的开辟是由解释器来完成的. # 双胞胎
# == 比较的是值(内容) True
# 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.当我们在控制台的时候, 代码块与代码块之间的规则:
# 1. 数字: -5 ~ 256之间的整数会被缓存
# 2. 字符串:
# 长度小于等于1 会默认缓存
# 长度大于1 如果字符串中只有数字, 字母下换线缓存
# 乘法得到的字符串:
# 1. 如果乘数是1. 和上面两个方案一致
# 2. 乘数不是1. 最终长度不能超过20
# 手动指定缓存 from sys import intern intern()制定缓存的内容
# 3. 布尔值
# 2. py文件里. 一个代码块内部. 只会缓存int, str, bool 也有自己的小数据池。 缓存的范围会比外面的代码块的数据池要大
# 1. 数字。都会缓存。 运算的结果不缓存(-5~256 会缓存)
# 2. 字符串。 默认的字符串都缓存. 如果有乘法。 遵循上方的结论
# 3. 布尔值。 默认缓存 a = "alex@sb.com" # 5
b = "alex@sb.com" # 1
2. is和==的区别
is比较的是内存地址
==比较的是值
3. decode和encode
python3内存中使用的是unicode。
unicode => utf-8 encode("utf-8")
utf-8 => unicode decode("utf-8")
utf-8和gbk不能直接转换
bytes是字符串的另一种表示形式
再谈编码
'''
1. ASCII: 8bit 1byte 英文字母 数字 特殊字符.
2. GBK: 16bit 2byte 主要是存中文。日文, 韩文, 繁字体。 中文的特殊字符 中国 (abcd)
3. UNICODE: 32bit 4byte
4. UTF-8: 可变长度的unicode
英文: 8bit, 1byte
欧洲文字:16bit, 2byte
中文: 24bit, 3byte (abcd)
GBK和UTF-8不能直接互换
转码
'''
# 在python2里面. 默认的编码是ASCII
# 在python3中unicode是可以使用的。 默认用的就是Unicode. 代码用utf-8来存储 # 如果用unicode存储, 如果用utf-8
# s = "你好啊" # 看到的就是unicode
# print(s) # 1. 编码. 把unicode转换成utf-8
# s = "刘伟很皮" # 12个字节
# abc = s.encode("UTF-8") # encode之后的结果是bytes类型 依然是原来的字符串
# print(abc) # b'数据' # 解码
# abc = b'\xe5\x88\x98\xe4\xbc\x9f\xe5\xbe\x88\xe7\x9a\xaf'
# s = abc.decode("UTF-8") # 解码。 用什么编码, 就用什么解码
# print(s) # s = "赵瑞鑫"
# print(s.encode("GBK"))
# bs = b'\xd5\xd4\xc8\xf0\xf6\xce'
# print(bs.decode("GBK")) # GBK的编码不能用UTF-8解码 # GBK的编码. 把这句话变成UTF-8
# bs = b'\xd5\xd4\xc8\xf0\xf6\xce'
# # 先解码
# s = bs.decode("GBK")
# # 重新编码
# bs2 = s.encode("UTF-8")
# print(bs2)
小学生都能学会的python(小数据池)的更多相关文章
- 小学生都能学会的python(闭包和迭代器)
小学生都能学会的python(闭包和迭代器) 1. 函数名第一类对象 函数名其实就是变量名 1). 可以像变量一样互相赋值. 2). 可以作为函数的参数,进行传递 3). 可以作为返回值返回 4). ...
- 小学生都能学会的python(字典{ })
小学生都能学会的python(字典{ }) 1. 什么是字典 dict. 以{}表示. 每一项用逗号隔开, 内部元素用key:value的形式来保存数据 {"jj":"林 ...
- 小学生都能学会的python(列表[ ])
小学生都能学会的python(列表[ ]) 1. 什么是列表(list) 能装东西的东西 列表中装的数据是没有限制的, 大小基本上是够用的 列表使用[]来表示. 在列表中每个元素与元素之间用逗号隔开 ...
- 小学生都能学会的python(函数的进阶)
小学生都能学会的python(函数的进阶) 1. 动态传参 形参: 1. 位置参数 2. 默认值参数 3. 动态传参 *args 动态接收位置参数 **kwargs 动态接收关键字参数 def fun ...
- 小学生都能学会的python(函数)
小学生都能学会的python(函数) 神马是函数 函数: 对功能或者动作的封装 函数的定义 def 函数名(形参列表): 函数体(return) ret = 函数名(实参列表) 函数的返回值 retu ...
- 小学生都能学会的python(编码 and 字符串)
小学生都能学会的python(编码 and 字符串) 一,编码 最早的计算机编码是ASCII. 有英文+数字+特殊字符 8bit => 1byte 没有中文, 后面的编码必须兼容ASCII ...
- 小学生都能学会的python(<lamda匿名函数,sorted(),filter(),map(),递归函数>)
小学生都能学会的python(<<lamda匿名函数,sorted(),filter(),map(),递归函数,二分法>> 1. lambda 匿名函数 lambda 参数: ...
- 小学生都能学会的python(生成器)
小学生都能学会的python(生成器) 1. 生成器 生成器的本质就是迭代器. 生成器由生成器函数来创建或者通过生成器表达式来创建 # def func(): # lst = [] # for i i ...
- 小学生都能学会的python(文件操作)
小学生都能学会的python(文件操作) 1. open("文件路径", mode="模式", encoding="编码") 文件的路径: ...
随机推荐
- 慎用PHP的unset、array_unique方法
背景 在日常工作中,可能会经常遇到一些PHP的代码场景,需要我们去除数组中的某个项,通常会直接调用unset方法,但是如果用得不妥,会给自己挖坑 1.实操 以下使用具体例子进行证明假设有数组如下值: ...
- python对大文件的处理
多线程框架中采取queue来实现线程间资源的互斥. 在文件过大的情况下,如果都读入内存的话,占用内存就太多了. 这里手动实现了一个多线程调用文件迭代器来使用f.next() # -*- coding: ...
- 【codeforces 807D】Dynamic Problem Scoring
[题目链接]:http://codeforces.com/contest/807/problem/D [题意] 给出n个人的比赛信息; 5道题 每道题,或是没被解决->用-1表示; 或者给出解题 ...
- springmvc上传操作
创建虚拟目录 配置tomcat的配置文件server.xml 在真实路径中放置一个图片 启动服务器: 直接可以通过配置的虚拟路径来访问真实路径中的图片 所以 我们在做图片上传的操作的时候 就可 ...
- ZOJ 2316 Matrix Multiplication
Matrix Multiplication Time Limit: 2000ms Memory Limit: 32768KB This problem will be judged on ZJU. O ...
- Shiro身份认证授权原理
shiro在应用程序中的使用是用Subject为入口的, 最终subject委托给真正的管理者ShiroSecurityMannager Realm是Shiro获得身份认证信息和来源信息的地方(所以这 ...
- MySQL Query Cache 相关的问题
最近经常有人问我 MySQL Query Cache 相关的问题,就整理一点 MySQL Query Cache 的内容,以供参考. 顾名思义,MySQL Query Cache 就是用来缓存和 Qu ...
- HDU2188 选拔志愿者
/* HDU2188 选拔志愿者 http://acm.hdu.edu.cn/showproblem.php?pid=2188 博弈论 巴什博奕 巴什博奕要注意n<=m时是必胜态 * * * * ...
- [Windows Server]新机子上装老系统·
硬盘模式改了也得用U大师,然后再PE里装 1.U大师做启动盘 2.拷贝解压后的系统进去 3.用PE自带安装工具
- ARP协议(3)ARP编程--winpcap&vs2012配置
好.之前说了那么多.最终到了,我们能够操刀的时候了. 在对ARP协议编程前.我们必需要能控制网络适配器(网卡).这个部分就是驱动! "我们要编写网卡驱动?",对,可是,至少我们现阶 ...