Python小数据池
一、python2和3的区别
在python3中 在python2中
print('ab')方式打印内容()括号是必须要有的。 print 'ab' 可以加可以不加。
只有range 有range还有xrange(生成器)
用户交换用input 用户交换用raw_input
二、赋值:
比较值是否相等。
is:比较的是内存地址。
id:比较的id是否相同。
==:比较两个值是否相等。
li1 = [1,2,3]
li2 = li1
print(id(li1),id(li2))
print(li1 is li2)
三、小数据池
在小数据池里的,数字的范围在 -5 --- 256 之间。
l2 = 6
l3 = 6
print(id(l2),id(l3)) id相同
l2 = 600
l3 = 600
print(id(l2),id(l3)) id不同
在小数据池里,字符串:1.不能有特殊字符,2.s*20 还是同一个地址,s*21以后过都是两个地址。
s1 = 'a' * 20
s2 = 'a' * 20
print(s1 is s2) True
s1 = 'a' * 21
s2 = 'a' * 21
print(s1 is s2) False
使用pycharm会不准,建议用终端尝试。列表、字典、元祖、集合没有这个概念。
四、bytes类型
1,各个编码之间的二进制,是不能互相识别的,会产生乱码。
2,文件的储存,传输,不能是unicode(因为unicode是32位太大)只能是utf-8 utf-16 gbk,gb2312,asciid等
对于英文:
str:表现形式:s = 'alex'
编码方式:00000001 unicode
bytes:表现形式:s = b'alex'
编码方式:00000000 utf-8、gbk。。。。
对于中文:
str:表现形式:s = '中国'
编码方式:00000010 unicode
bytes:表现形式:s = b‘\xe4\xb8\xad\xe5\x9b\xbd'
编码方式:00000010 utf-8、gbk....
转换命令:
编码:encode 把str转换成bytes,unicode转换成utf-8或gbk
s = '中国'
print(s.encode('utf-8'))
print(s.encode('gbk'))
s2 = b'alex'
print(s2)
解码:decode 把bytes,utf-8转换成unicode
s = '中国'
b = s.encode()
print(b)
a = b.decode('utf-8')
print(a)
特别说明:如果内容都是英文,则解码时字符集可以随便输(或不输,默认UTF-8),因为英文都是ASICC码组成的。