python基础day7枚举,id () ,(is == 区别)和编码

枚举:起始位置默认是0可以自己改    可以同时获得索引和值
for index,i in enumerate(li,100):
print(index,i)

1.id () (is == 区别)
id(内存地址)
s = 'alex'
print(s,type(s),id(s)) #内存地址,不断变换的
li = [1,2,3]
print(li,type(li),id(li))

== is
对于int
对于数字小数据池 -5 -------- 256 为了节省内存空间 在这个范围内
创建的相同的数字,都指向同一个内存地址。
s1 = 'alex'
s = 'alex'
print (s1 == s)
print(s1 is s)
对于字符串小数据池,有空格不指向同一个内存地址 长度不超过20, 不能有特殊字符剩下的都指向一个内存地址

列表,字典,元祖,set
== 比较的是值
is 比较的内存地址
l1 = [1,2,3]
l2 = [1,2,3]
print(l1 == l2) True
print(11 is l2) False
2.编码
python3:
int
bytes 字节 英文表现形式: s = b'alex' 内存存储(utf-8,gbk,gb2313.....) 01010
中文表现形式 s = b'\xe5\xb0\x8f\xe5\xa6\xb9' utf-8
s = b'\xd0\xa1\xc3\xc3' gbk
str 表现形式 s = 'alex' 内存存储unicode 010101
1.不同的编码是不能相互识别, 会产生乱码。
unicode A 00000001 00000001 00000001 00000001 四个字节
中 01010010 00000110 00011100 00000111 四个字节
utf - 8 A: 00000001 一个字节
欧洲@: 00000001 00000001 两个字节
亚洲 中:00000001 00000001 00000001 三个字节
gbk A 00000001 00000001 两个字节
中 01010010 00000110 两个字节
gbk2312
2.存储,传输:utf-8 或 jbk 或 gb2312 等等(绝对不是unicode)

转换 unicode ---- utf-8
s = 'Q'
b1 = s.encode('utf-8')
print(b1)

s1 = '小妹'
b2 = s1.encode('utf-8')
b22 = s1.encode('gbk')
print(b2)
print(b22)


posted @ 2017-10-30 15:38  AUU同学  阅读(76)  评论(0)    收藏  举报