1.python代码的运行方式
-
交互式:直接在终端中运行解释器,而不是输入要执行的文件名,对于每个输入语句即时运行的结果,适合语法练习,缺点代码不能保存。
-
脚本式:批量执行一组语句并运行结果,编程的主要方式
2.进制
计算机底层所有的数据都是以010101的形式存在(图片,文本,视频等)
-
二进制
1 1 10 2 11 3
2.1进制转换
v1 = bin(25) # 十进制转换为二进制
print(v1)# "0b11001"
v2 = oct(23) # 十进制转换为八进制
print(v2)# "0o27"
v3 = hex(28) # 十进制转换为十六进制
print(v3)# "0x1c"
i1 = int("0b11001",base=2)
print(i1)# 25
i2 = int("0o27",base=8)
print(i2)# 23
i3 = int("0x1c",base=16)
print(i3)# 28
3.计算机的单位
由于计算机中本质上所有东西是以二进制存储和操作的,为了方便对于二进制值大小的表示,所以就搞了一些单位。
-
b(bit) , 位
1,1位 10,2位 111,3位 1001,4位
-
B(byte) , 字节
8位是一个字节。 10111011,1个字节
-
KB(kilobyte) , 千字节
1024个字节就是1个千字节 1KB=1024B=1024*8b
-
M(Megabyte) , 兆
1024KB = 1M 1M = 1024KB= 1024*1024B=1024*1024*8b
-
G(Gigabyte) ,千兆
1024M = 1G 1G = 1024M = 1024*1024KB= 1024*1024*1024B=1024*1024*1024*8b
-
T(Terabyte) , 万亿字节
1024G = 1T
-
...其他更大的单位PB/EB/ZB/YB/BB/DB不再赘述。
3.1ascii编码
ascii规定使用一个字节来表示字母与二进制的对应关系
4.2 gb-2312编码
gb-2312编码,由国家信息标准委员会制作(1980年)。
gbk编码,对gb2312进行拓展,包含了中日韩等文字(1995年)。
在与二进制做对应关系时,由如下逻辑
- 单字节表示,用一个字节表示对应关系。2**8=256
- 双字节表示,用两个字节表示对应关系。2**16=65536
4.3 unicode
unicode也被称为万国码,为全国每个文字都分配了一个码位(二进制表示)
-
Ucs2
用固定的两个字节去表示一个文字 2**16=65535
-
Ucs4
用固定的四个字节去表示一个文字 2**32=4294967296
文字 十六进制 二进制 乔 4E54 100111001010100 乔 4E54 01001110 01010100 乔 4E54 00000000 00000000 01001110 01010100
unicode的应用:在文件存储和网路传输时,不会直接使用unicode,而在内存中会使用unicode
4.4 utf-8编码
包含所以文字和二进制的关系,全国应用最广泛的一种编码
本质上:utf-8是对unicode的压缩,用尽量少的二进制来进行文字对应。
- 第一步:选择转换模板
unicode码位范围 utf-8 转换模板
0000 - 007F 用一个字节表示 0XXXXXXX
0080 - 07FF 用两个字节表示 110XXXXX 10XXXXXX
0800 - FFFF 用三个字节表示 1110XXXX 10XXXXXX 10XXXXXX
10000 - 10FFFF 用四个字节表示 11110XXX 10XXXXXX 10XXXXXX 10XXXXXX
- 第二步:在模板中填入数据
-"武" -> 6B66 -> 110 101101 100110
-根据模板套入数据
1110XXXX 10XXXXXX 10XXXXXX
1110XXXX 10XXXXXX 10100110
1110XXXX 10101101 10100110
11100110 10101101 10100110
4.5python相关的编码
字符串(str) "我叫张云嘉" unicode处理
字节(byte) b"hxhuwxxhwxh" utf-8 or gbk编码
v1 = "武"
v2 = "武".encode("utf-8")
print(v2) #b'\xe6\xad\xa6' utf-8 一个中文三个字节
v3 = "武".encode("gbk") gbk 一个中文两个字节
print(v3) #b'\xce\xe4'
name = v3.decode("utf-8")
将一个字符串写进一个文件中
name = "张云嘉"
data = name.encode("utf-8")
#打开一个文件
file_object = open("log.txt",mode="wb")
#在文件中写内容
file_object.write(data)
#关闭文件
file_object.close()