python09

发布时间 2023-09-23 23:05:11作者: .Views

1.python代码的运行方式

  • 交互式:直接在终端中运行解释器,而不是输入要执行的文件名,对于每个输入语句即时运行的结果,适合语法练习,缺点代码不能保存。

  • 脚本式:批量执行一组语句并运行结果,编程的主要方式

2.进制

计算机底层所有的数据都是以010101的形式存在(图片,文本,视频等)

  • 二进制

    1   1
    10  2
    11  3
    

    image-20230923104414712

2.1进制转换

image-20230923104536877

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()