二次编码 深浅拷贝 is和==

1.二次编码

  1. ascii 不支持中文
  2. gbk 支持中文 2个字节 包含ascii
  3. Unicode 万国码 python3 内存Unicode
  4. utf-8 可变的长度 英文 1字节 欧洲2个字节 亚洲3个字节
  • unicode 内存
  • 硬盘 utf-8 字节 存储 传送
s = "字符串"
s1= s.encode("utf-8") #编码 编码集
print(s1)#b'xe5\xad\x97\xe7\xac\xa6\xe4\xb8\xb2'
s = "zhy"
s1 = s.encode("utf-8")
print(s1)#b'zhy'
  • encode 编码
  • decode 解码
s = "赵海宇"
s1 = s.encode("utf-8")
print(s1.decode("utf-8"))  #赵海宇
  • 应用场景:文件操作 网络传输 网络编程

2.基础数据补充

li = [1,2,3,4,5]
for i in li:
    li.append(0)
print(li) #li=[1,2,3,4,5,0,0,0,0,0, ]
li = [1,2,3,4,5]
for i in li:
    li.append(i)
print(li) #循环
li = [1,2,3,4,5]
for i in li:
    li.remove(i)
print(li)#[2,4]
li = [1,2,3,4,5]
for i in li:
    li.pop(i)
print(li)#[1,2]
for i in range(len(li)):
    li.pop()
print(li) #[]

3.深浅拷贝

  • 浅拷贝 copy
    1. 只拷贝一层 元素是不可变的 就不会变
    2. 元素是两个可变的 元素就不会变
li = [1,2,3,4,5]
lst = li.copy()
print(li)#[1, 2, 3, 4, 5]
print(lst)#[1, 2, 3, 4, 5]
li = [1,2,3,4,[5,3,9]]
lst = li.copy()
li[-1].append(55)
print(li)
print(lst)
  • 深拷贝
import copy
li = [1,2,3,4,[5,3,9]]
lst = copy.deepcopy(li)
print(lst)#[1,2,3,4,[5,3,9]]
print(lst)#[1,2,3,4,[5,3,9]]
import copy
li = [1,2,3,4,[5,3,9]]
lst = copy.deepcopy(li)
li[-1].append(66)
print(li)#[1, 2, 3, 4, [5, 3, 9, 66]]
print(lst)#[1,2,3,4,[5,3,9]]

4.is == 区别

  • == 比较两边的值
  • is 比较两边的内存地址
  • 代码块 节省资源 一个文件就是一个代码块
  • 代码块机制:
    • 数字:-5 ~ 256
    • 字符串:乘法的时候总长度不能超过20
def fun1():
    a=1000
    return a
def func2():
    a=1000
    return a
print(fun1() is func2())  #False
  • 小数据池: 代码块 > 小数据池

猜你喜欢

转载自www.cnblogs.com/zhaohaiyu/p/11142950.html