Python教程

python day06

本文主要是介绍python day06,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一些小知识

python2 python3(简写为p2 p3)

  1.默认编码不同 p2 ASCII   p3 utf-8

  2.p2 print("") print ""   p3只能print("")

  3.p2 有 xrange() (可以转换为range) (也有range )

  4.p2 raw_input()   p3 input()

 

=, == 和 is

= 赋值

== 比较值是否相等

is 比较内存地址

 

  数字和字符串 小数据池

  为了节省空间 节省内存(请在终端进行)

  id(内容) 这样就能打印id也就是内存地址

  list dict tuple set没有小数据池

 1 li1 = [1,2,3]
 2 li2 = li1
 3 print(li2 is li1)    #True
 4 print(id(li1),id(li2))    #相等
 5 
 6 #数字和字符串  小数据池 
 7 #数据范围  -5-----256
 8 
 9 li1 = 6
10 li2 = 6
11 print(id(li1), id(li2)) #一样的  共用
12 print(li1 is li2)  #True
13 
14 li1 = 1000
15 li2 = 1000
16 print(id(li1), id(li2)) #不一样的  不共用
17 print(li1 is li2)  #False
18 
19 #字符串  1.不能含有特殊字符(比如@ 空格  + - * /)
20 #        2.s*20 还是同一个地址  s*21以后都是两个地址  (存疑 不一定)
21 s1 = 'dasdasdas@sdah'
22 s2 = 'dasdasdas@sdah'
23 print(s1 is s2)    #True
24 
25 s1 = 'dasdasdassdah'
26 s2 = 'dasdasdassdah'
27 print(s1 is s2)    #False
28 
29 s1 = 'jfdbhegihdslnkldshfgidjsgbpolsdihyfpou'*20
30 s2 = 'jfdbhegihdslnkldshfgidjsgbpolsdihyfpou'*20
31 print(s1 is s2)    #True
32 
33 
34 s1 = 'jfdbhegihdslnkldshfgidjsgbpolsdihyfpou'*1024
35 s2 = 'jfdbhegihdslnkldshfgidjsgbpolsdihyfpou'*1024
36 print(s1 is s2)    #False
View Code

              

                        

python3中的编码

ascii(1个字节8位)

unicode (开始是16位(之后就不用了) 现在是32位 4个字节)

utf-8 (英文字母 8位 一个字节)

中文 24个字节

gbk (英文 8位一个字节)

中文 16位两个字节

 

gbk 不能识别 utf-8

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

2.文件储存,传输不能是unicode(因为花太多存储空间)

 

py3: str 在内存中是用unicode编码 数据绝对不能直接用

bytes类型 可以直接用str的方法 不是用unicode编码,而是utf-8或gkb等

unicode要转化为utf-8来用

 

  

对英文

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

内部存储 编码方式:unicode 01010101

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

编码方式:utf-8 gbk等 00100001

 

s = 'alex'
s1 = b'alex'
print(s,type(s))    #str
print(s1,type(s1)) #bytes

 

对中文

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

内部存储 编码方式: 01010101 unicode

bytes: 表现形式: s = b'x\e91\e91\e01\e21\e31\e32' utf-8(完全看不懂)

编码方式 00100001 utf-8 gbk等

将unicode 转换为utf-8或gbk

encode()编码

s = '中文'
print(s,type(s))
s1 = b'中文'
#ERROR
#SyntaxError: bytes can only contain ASCII literal characters.
print(s1,type(s1))
s1 = 'alex'
#s11 = s1.encode('utf-8')
#s11 = s1.encode()
s11 = s1.encode('gbk')
print(s11)

 

 

 

 

这篇关于python day06的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!