python基础五

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'>

 

  

原文地址:https://www.cnblogs.com/pygg/p/8361491.html