编码与copy
Is == id
Id查询内存地址
小数据储存再内存中的地址中
用id 找内存地址
Is 比较 内存地址是否相同
Is 再终端比较 cmd
小数据池: int str 再一定范围内,如果俩个数相同,
为了节省内存,共用一个内地址 范围 —5 ~ ~256
Str 1有非字母的字符串,没有小数据池 。
2 单个字母 乘以数字 ,数字不能超过21。有小数据池
编码二
Ascii 一个字符一个字节 (8位)
Unicode 万国码 16 位 一个字符 二个字节
32位 一个字符四个字节
Utf-8 字母一个字节
欧洲 2个字节一个个字符
亚洲 3给个字节一个个字符
Gbk 一个字母2个字节 中文2个字节
不同密码本之间的二进制是不能互相识别的,容易报错或产生乱码
计算的文件存储和传输都是它们(Ascii Utf-8 Gbk gb2312)0101.不能是unicode的0101
大前提python3
内存中的编码方式是 unicode
数据类型。。。
英文:
Str: 表现形式
内部编码 unicode
Bytes:表现形式 :name = b“内容”
内部编码 bytes 非unicode
Str 转换 bytes
S1 = “内容”
B1 = s1.encode(编码类型)叫编码
S2 = b1.decode(编码)叫解码
Str 所有方法 bytes都有
Ascii :英文数字特殊字符 8位一个字节
Unicode:万国码 4个字节
升级UTF-8 字母 8位一个字节
欧洲 4个字节
中文 8个字节
不同的编码之间不能相互识别
在文件传输和存储,编码是除Unicode 以外的任意的任意编码
Python3x
Str:内部编码方式 unicod 表现形式:name = “中国”
Bytes: 内部编码方式 非unicode 表现形式 :name + b
基础数据类型的补充
元组 :元组里面只有一个元素后没有跟逗号,则该数据的数据类型与里面的元素数据类型是一样的。
列表注意:再循环一个列表时,最好不要改变列表的大小,会影响你的最终结果。
再循环字典中,最好不要改变字典的大小,会影响结果或者报错。
基础数据类型 set集合
增:集合。Add(“内容”) set.update(“可迭代的”)
删:集合。Remove(“内容”),随机删除—集合。Pop()有返回值,删除的内容
集合。Clear()清空,del 集合
查:for i in set:
Print(i)
交集(& 或 intersection) 并集(| 或 union) 差集(- 或 difference)
反交集(^ 或 symmetric_difference)
对于赋值运算来说,指向的都是同一个内存地址,一变都变
深层copy
深层copy , 完全独立的 每一层都不共用
新变量名=Copy。Deepcopy(变量)
赋值是 深copy
浅层copy
对于浅层copy来说,第一层创建的是新的内存地址,而从第二层开始,
指向的都是同一个内存地址,所以,对于第二层以及更深的层数来说,保持一致性
对于切片来说,这是浅copy
l1 = [1, 2, 3, 4, 5, 6, [11,22]]
l2 = l1[:]
# l1.append(666)
# print(l1, l2)
l1[-1].append(666)
print(l1, l2)