id 内存地址
name = "lliulin" print(id(name)) #输出:467199291832
is 判断的是内存地址
name1 = "liu#" name2 = "liu#" print(name1 == name2) print(name1 is name2) #在pycharm中 输出 输出:True 输出:True #在编译器里 输出:True 输出:False
python
int str 有小数据池
int(-5~256)是小数据池,在一个内存地址
i = 256 i1= 256 print(i is l1) #输出:True i = 257 i1= 257 print(i is l1) #输出:False
str:如果全是字母组成,那么True 如果非字幕出现,那么False
如果int*str(必须是一个字母) 则20个以内 是True
其他数据类型,没有小数据池
编码进阶:
1.不同编码之间,不能识别对方二进制,会报错或者乱码
2.在你的字符串(文件)存储传输时,必须用非unicode
python3:
字符串:编码方式:默认都是unicode
对于非中文:bytes:表现形式:b."alex"
内部编码:utf-8 gbk 。。。(非unicode)
str:表现形式:"str"
内部编码:unicode
转换
name = "liulin" b = name.encode("utf-8") b1 = name.encode("gbk") print(name,type(name)) print(b,type(b)) print(b1,type(b1)) #liulin <class 'str'> #b'liulin' <class 'bytes'> #b'liulin' <class 'bytes'>
对于中文:bytes:表现形式:b'xe5x88x98xe6x9ex97'
内部编码:非unicode
str:表现形式:"中文"
内部编码:unicode
转换
name = "中国" b = name.encode("utf-8") b1 = name.encode("gbk") print(name,type(name)) print(b,type(b)) print(b1,type(b1)) #中国 <class 'str'> #b'xe4xb8xadxe5x9bxbd' <class 'bytes'> #b'xd6xd0xb9xfa' <class 'bytes'>