# 异常处理: # 什么是异常?异常和错误的区别 # Error 语法错误 比较明显的错误 在编译代码阶段就能检测出来 # Iteration 异常 在执行代码的过程中引发的异常 # 异常发生之后的效果 # 一旦在程序中发生异常,程序就不再继续执行了 # try: # # name # [][3] # except NameError: # print("请设置好变量!!") # except IndexError: #分支异常处理 # print('请认真!!') # # except Exception as e:#万能异常,常常放在分支异常后面 # # print(e,type(e)) # else: # print(666)#只有不出现错误才会执行,若执行成功except,不执行else # finally: # print(777)#不管出没出现错误,finally都会执行 # 自定义异常 # raise NameError('这是一个name error的异常') # class EvaException(Exception): # def __init__(self,msg): # self.msg = msg # # raise EvaException('这是一个什么什么错误,有什么问题') # 使用异常处理的注意事项 # 断言 assert raise 主动抛异常 # 异常处理(一般少用异常处理) # try/except # try/except/else # try/except/else/finally # try/except/finally # try/finally # collections模块 # 数据类型的扩展模块 # import queue # q = queue.Queue() # print(q.qsize()) # q.put(1) # q.put('a') # q.put((1,2,3)) # q.put(({'k':'v'})) # print(q.qsize()) # print('q : ',q) # print('get : ',q.get()) # print(q.qsize()) # deque 双端队列 # from collections import deque # dq = deque() # dq.append(2) # dq.append(5) # dq.appendleft('a') # dq.appendleft('b') # print(dq) # # print(dq.pop()) # # print(dq) # # print(dq.popleft()) # # print(dq) # print(dq.remove('a')) # print(dq.insert(2,'123')) # print(dq) # 网络基础: # (1)架构:C/S架构,client客户端和server服务器端,优势在于充分发挥pc机的性能; # B/S架构,browers浏览器和server服务器端,统一了应用的接口 # 1 mac地址 : 是一个物理地址,全球唯一, 类似于身份证 # 2 ip地址: 是一个四位点分十进制,它标识了计算机在网络中的位置.类似于 学号 # 3 交换机的通信方式: # 广播 : 吼一嗓子 # 单播 : 一对一 # 组播 : 一对多 # 4 arp协议 : 通过目标ip地址获取目标mac地址的一个协议. # 5 端口 : 操作系统为本机上每一个运行的程序都随机分配一个端口,其他电脑上的程序可以通过端口获取到这个程序 # ip地址 + 端口 能唯一找到某台电脑上的某一个服务程序 # 6 路由器 : 连接不同网段 , 路由 # 7 网关 : 类似于一个局域网的出口和入口 # 8 网段 : 一个局域网内的ip地址范围 # 9 子网掩码 : 子网掩码 & ip地址 得到网段 # 10 osi 五层模型: # 应用层 : http,https,ftp # 传输层 : tcp / udp 四层交换机 四层路由器 # 网络层 : ip协议 路由器 三层交换机 # 数据链路层 : arp协议 以太网交换机 网卡 网桥 # 物理层 : 传输电信号 集线器 网线 光纤 # (2).socket模块 # 这是一个新的模块 # import socket # # socket # 又叫做套接字 # 有很多种类型, 但是咱们只需要知道两种就可以了 # sk = socket.socket(family=AF_INET, type=SOCK_STREAM) # family: # 一种: AF_UNIX基于文件类型的套接字(早期socket是源自于unix系统而研发的一个功能, 主要是为了同一台电脑上, 多个程序直接通信) # unix系统的中心思想是: 一切皆文件 # 一种: AF_INET基于网络类型的套接字 # type: # 一种是基于TCP协议 # SOCK_STREAM # 一种是基于UDP协议 # SOCK_DGRAM # tcp协议: 可靠的, 面向连接的, 面向字节流形式的传输方式 # udp协议: 不可靠的, 不面向连接的, 面向数据报的传输方式, 但是它快 # 创建服务器文件: # server_.py内容如下: import socket k1=socket.socket() k1.bind(('192.168.12.32', 8800)) k1.listen() cn,ar=k1.accept() ret=cn.recv(1024).decode('utf-8') print(ret) cn.close() k1.close() #client客户端文件client_.py: # v1=socket.socket() # v1.connect(('192.168.12.32', 8800)) # v1.send('你好'.encode('utf-8')) # v1.close()