python 小数据池,is and "==",decode ,encode

时间:2023-03-08 17:15:26
python 小数据池,is and "==",decode ,encode

一:小数据池

1.python运行中的缓存:

2.目的:缓存我们字符串,整数,布尔值。在使用的时候不需要创建过多的对象

3.python 缓存数据:缓存:int, str, bool、
                    int: 缓存范围 -5~256
                    str:
                1. 长度小于等于1,直接缓存
                2. 长度大于1. 字符串中如果只有数字, 字母, 下划线。 就会缓存
                3. 乘以1。 同上, 乘以大于1的数。仅包含数字,字母下划线。最终长度小于20会缓存
                4. 使用sys模块中的intern()缓存字符串
            代码块的关系:如果在同一个代码块中。默认的整数和字符串还有布尔值都会进行缓存. 如果涉及计算。尊崇上面的规则
            如果跨代码块,按照上面的规则执行的

二, is 和"=="的区别: is 是比较变量指向的内存地址是不是一致,"==" 比较的是变量的值是否一致

for E :   list1 = [1,2,3,4,5]

     list2 = [1,2,3,4,5]

list1 == list2

    >>>True

    list1 is list2

    >>>False

"==", 比较的是两个变量赋予的值是不是相同: lis1 与list2 对应值 是一样的,

is 说的是两个变量是不是一样:  list1 不是list2 , list1 增加值,list2 不会变

三:   编码转换  decode和encode 
        python3内存中使用的是unicode。
        unicode => utf-8  encode("utf-8")

a =  "李白"

=>>转换成 utf-8编码     : a.encode("utf-8") 
        utf-8 => unicode  decode("utf-8")

  b = '\xe6\x9d\x8e\xe7\x99\xbd'

>>>用utf - 8解码=>  : b.decode('utf-8')
        utf-8和gbk不能直接转换
        bytes是字符串的另一种表示形式