a = 1000
b = 1000
print(a==b) True
#两个等号比较的是数值
#is比较的是内存位置
print(a is b) false
print(id(a))
print(id(b))
内存地址不一样,相当于门牌号
#小数据池:在一定范围内设定一样的值,共用位置节省空间
#数字 在-5-256范围
#字符串:1.如果含有特殊字符,不存在小数据池 2.单个字符在int(20)以内有小数据池
#其他都不存在数据池
#编码
1.编码之间的二进制互不识别
2.文件的储存和传输通过0101010,但是不能用unicode,浪费空间
python3当中的编码
python3当中的str在内存中的编码方式是unicode,不能直接储存和传输
bytes类型的编码方式是非unicode,是utf-8和gbk
英文
str:表现形式 s=‘laonanhai’
内部编码:unicode
bytes:表现形式 s=b‘laonanhai’
内部编码:非unicode
中文
str: 表现形式 s='老男孩‘
内部编码:unicode
bytes:表现形式 s=b'xe8x80x81xe7x94xb7xe5xadxa9'
内部编码:非unicode
s = '老男孩' s1 = s.encode('utf-8') print(s1)
编码的补充 s = 'alex' s1 = s.encode('utf-8') 编码 unicode -> utf-8 s2 = s.encode('gbk') 编码 unicode -> gbk s3 = s1.decode('utf-8') print(s3) 解码 utf-8转化成unicode 如何将gbk转化成utf-8?是不能直接转化的,只能先转到unicode,再转换 s = 'alex' s1 = s.encode('gbk') print(s1) s2=s1.decode('gbk').encode('utf-8') print(s2) s = '老男孩' s1 = s.encode('gbk') print(s1) s2=s1.decode('gbk').encode('utf-8') print(s2)
b'alex' b'alex' b'xe8x80x81xe7x94xb7xe5xadxa9'