老男孩python全栈就业班第9期第1部分基础+模块+面向对象+网络编程第6天-小知识点汇总及编码进阶

小知识点汇总及编码进阶

1.python2和python3的区别

1)python2

编码是 ASCII

print可以加括号,也可以不加

有range() 和 xrange()

raw_input

2)python3

编码是utf8

print 是否必须加括号

python3 只有 range()

input

2.赋值 == 比较值是否相等 is 比较,比较的是内存地址

li1 = [1,2,3]
li2 = li1
print(id(li1), id(li2)) #id值相同

3.数字,字符串,小范围内可共用一个地址,节省内存空间

小数据池

数字的范围 -5 — 256

字符串,第一不能含有特殊字符,第二 s*20 还是同一个地址,s*21以后都是两个地址

i1 = 6
i2 = 6
print(id(i1), id(i2)) #id值一样的

i1 = 300
i2 = 300
print(id(i1), id(i2)) #id值不一样

4.剩下的 list dict tuple set

l1 = [1,]
l2 = [1,]
print(l1 is l2) #False

5.编码

ASCII

  A:00000010  8位  1个字节

UNICODE

  A:00000000 00000001 00000010 00000100  32位  4个字节

       中:00000000 00000001 00000010 00000110  32位  4个字节 

UTF-8

  A:00100000  8位  1个字节

  中:00000001 00000010 00000100  24位  3个字节

GBK  

  A:00000110  8位  1个字节

  中:00000010 00000110  16位  2个字节

1)各个编码之间的二进制,是不能互相识别的,会产生乱码

2)文件的储存和传输不能是unicode(只能是utf-8、utf-16、gbk、gb2312、ascii等)

6.Python3

字符串在内存中是用unicode编码

bytes 类型

对于英文:

  str:表现形式:s = 'alex'

               编码方式:010101010 unicode

       bytes:表现形式:s = b'alex'

    编码方式:00010101 utf-8 gbk...

实例

s = 'alex'
s1 = b'alex'
print(s.type(s))
print(s1.type(s1))

对于中文:

  str:表现形式:s = '中国'

               编码方式:010101010 unicode

       bytes:表现形式:s = b'x\e91\e91\e01\e21\e31\e32'

    编码方式:00010101 utf-8 gbk...

实例

s = '中国'
print(s.type(s))

s1 = b'中国'
print(s1, type(s1)) #报错

s1 = 'alex'
#encode 编码,如何将str转换成keyss
s11 = s1.encode('utf-8')
print(s11)

s2 = '中国'
s22 = s2.encode('utf-8')
s222 = s2.encode('gbk')
print(s22)
print(s222)

  

posted on 2019-11-21 09:18  herisson_pan  阅读(14)  评论(0)    收藏  举报

导航