小数据池

1. id()

通过id()可以查看到一个变量表示的值在内存中的地址

s = "Agoni"
print(id(s))
# 2410961093272

2. is 和 ==

== 判断左右两端的值是否相等,是不是一致

is 判断左右两端的内存地址是否一致,如果返回True 可以确定这两个变量使用的是同一个对象

在Python中,默认会把数字, 字符串, 布尔值进行缓存

1. 当我们在控制台时(CMD) #按照这个记

  • 数字: -5 ~ 256 之间的整数会被缓存

  • 字符串:

    1. 长度小于等于1,会默认缓存
    2. 长度大于1. 如果字符串中只有数字,字母,下划线缓存
    3. 用乘法得到的字符串:①乘数是1 , 仅包括数字,字母,下划线时会被缓存② 乘数不是1,最终长度不能超过20
  • 手动指定缓存

    from sys import intern    # intern  指定缓存内容
    a = intern("Agoni@.com")
    b = intern("Agoni@.com")
    print(a is b)
  • 布尔值

2. py文件里

​ py文件里,一个代码块内部, 只会缓存 int str bool .也有自己的小 数据池, 缓存范围回避外面的代码块的数据池大

1. 数字. 基本上都会缓存  运算结果不缓存( -5~256  会缓存)
  1. 字符串. 默认的字符串都缓存 如果有乘法 遵循上方的结论
  2. 布尔值. 默认缓存

再谈编码

在Python2里面 默认的编码是ASCII

在Python3中 UNICODE 是可以使用的, 默认用的就是UNICODE, 代码用UTF-8 来存储

  1. 编码? 把UNICODE 转换成UTF-8

    s = "未来可期"
    a = s.encode("UTF-8") # encode 之后的结果是bytes类型 依然是原来的字符串
    print(a) # 打印结果 b'数据'
    # b'\xe6\x9c\xaa\xe6\x9d\xa5\xe5\x8f\xaf\xe6\x9c\x9f' \x 表示是16进制
  2. 解码

    a = b'\xe6\x9c\xaa\xe6\x9d\xa5\xe5\x8f\xaf\xe6\x9c\x9f'
    s = a.decode("UTF-8")
    print(s)
    # 打印结果 未来可期

    GBK 不能用UTF-8 解码 , 必须用GBK解码 解码之后是UNICODE

Python基础篇 -- 小数据池和再谈编码的更多相关文章

  1. day 006 小数据池和再谈编码

    1.小数据池. 目的:缓存我们的字符串,整数,布尔值.在使用的时候不需要创建过多的对象 缓存: int str bool int 范围:-5~256 str: 1.长度小于等于1,直接缓存 2.长度大 ...

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

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

  3. python基础之小数据池,is和==区别 编码问题

    主要内容 小数据池,is和==区别 编码问题 小数据池 一种缓存机制,也称为驻留机制,是为了能更快提高一些字符串和整数的处理速度is 和 == 的区别 == 主要指对变量值是否相等的判断,只要数值相同 ...

  4. python基础之小数据池、代码块、编码

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

  5. python基础之小数据池

    一,id,is,== 在Python中,id是什么?id是内存地址,比如你利用id()内置函数去查询一个数据的内存地址: name = '太白' print(id(name)) # 158583128 ...

  6. Day6--Python--小数据池和再谈编码

    一.小数据池 参考 目的:缓存我们字符串,整数,布尔值.在使用的时候不需要创建过多的对象 缓存: int, str, bool int: 缓存范围 -5~256 str: 1. 长度小于等于1,直接缓 ...

  7. python之路--小数据池,再谈编码,is和 == 的区别

    一 . 小数据池 # 小数据池针对的是: int, str, bool 在py文件中几乎所有的字符串都会缓存. # id() 查看变量的内存地址 s = 'attila' print(id(s)) 二 ...

  8. python中的 小数据池 is 和 ==

    1. 小数据池 一种数据缓存机制,也被称为驻留机制 小数据池针对的是:整数 , 字符 , 布尔值 .其他的数据类型不存在驻留机制 在python中对 -5 到256之间的整数会被驻留在内存中, 将一定 ...

  9. 百万年薪python之路 -- 小数据池和代码块

    1.小数据池和代码块 # 小数据池 -- 缓存机制(驻留机制) # == 判断两边内容是否相等 # a = 10 # b = 10 # print(a == b) # is 是 # a = 10 # ...

随机推荐

  1. 洛谷 - P1072 Hankson - 的趣味题 - 质因数分解

    https://www.luogu.org/problemnew/show/P1072 一开始看了一看居然还想放弃了的. 把 \(x,a_0,a_1,b_0,b_1\) 质因数分解. 例如 \(x=p ...

  2. Excel - 使用公式将秒转换为分+秒

    场景 现在有个需求:将Excel里的时间转换为分+秒的格式,如下: time(second) time(min+second) 482.712 XXmin,XXs 480.737 XXmin,XXs ...

  3. python 基础(十五) socket编程

    SOCKET TCP协议: 有请求 有响应 称之为 tcp协议 是面向连接的协议 就是在收发数据之前 必须先要建立一个可靠的链接 三次握手 如:网站 UDP协议: 是一个非链接的协议 传输之前不需要键 ...

  4. AKOJ-1695-找素数

    题意: 给定区间L,R. 计算区间中素数个数. 2 <= L,R <= 2147483647, R-L <= 1000000. 思路: 素数区间筛 先筛(2-sqrt(r)). 再用 ...

  5. Jasper_table_resolve multiple copies of table in detail band issue

    resolve method: (1) put table component into the Title band / Page Header band / Summary band, not i ...

  6. VMWare版本兼容问题处理

    其他电脑拷贝过来的VMWare虚拟机启动时报错: 在虚拟机根目录中找到"vmx"后缀文件,发现原来的VM版本为14,而本地的VMWare版本为11. virtualHW.versi ...

  7. Action类为何要 extends ActionSupport以及实现ModelDriven

    http://blog.sina.com.cn/s/blog_164e377490102wqhk.html

  8. 在 Java 的多线程中,如何去判断给定的一个类是否是线程安全的(另外:synchronized 同步是否就一定能保证该类是线程安全的。)

    同步代码块和同步方法的区别:同步代码块可以传入任意对象,同步方法中 如果多个线程检查的都是一个新的对象,不同的同步锁对不同的线程不具有排他性,不能实现线程同步的效果,这时候线程同步就失效了. 两者的区 ...

  9. python学习之模块:

    每个.py文件就是一个以文件名作为区别的模块,模块化编程便于维护.其它模块要调用某个模块的变量和函数就要用import 模块,然后通过模块.函数.模块.变量来引用. 为防止模块间变量和函数乃至模块名的 ...

  10. Ionic之button标签ng-click无反应解决

    在使用Ionic中,使用按钮的ng-click事件,竟然点击没有反应,刚开始以为自己写得方法有问题才会不起作用,自己在点击之后就console.log()一个东西,但是console也是无法反应的.& ...