new 和init的区别
__new__比__init__先执行,其作用是创建一个空的类对象
作为一个类对象:必须具有三个组成部分
所以调用type中的__new__来完成组装
得到这个类对象后需要将其返回,以供__init__来使用
异常:
程序中无法按照逻辑顺序执行完全部代码,抛出的错误称之为异常
当异常发生时,解释器会打印异常详细信息,并且终止程序的执行
排查错误,
1.定位到错误发生的位置:
查看追踪信息
如果代码为自己写的未调用任何内置模块或方法,错误位置在最后一行
代码调用其他模块
内置模块则是自己的错误
别人写的有可能出错需要查看
2.查看异常类型
3.查看异常的值
异常的三个组成部分
追踪信息
异常类型
异常的值
异常一旦发生就会终止程序,对于用户体验极差需要处理
异常可以由发生的时间分为两类
1.语法检测异常:
解释器会在执行代码前先检测语法,通过才会执行,发生异常则不会执行任何代码
语法错误和缩进错误
2.运行时异常:
已通过语法检测,解析执行期间发生的异常
python中不同的异常可以用不同的类型去标识,一个异常标识一种错误
AttributeError属性错误
IOError 输入输出异常,无法打开文件
ImportError 无法引入模块或包,基本上是路径问题或名称错误
IndentationError 语法错误,代码未对齐
IndexError 索引越界
KeyError访问字典不存在的键
keyboardInterrupt Ctrl+C被按下
NameError 使用一个未被赋予对象的变量
SyntaxError 语法错误
TypeError 传入对象与要求不符合
UnboundLocalError 试图访问一个还未被设置的局部变量
ValueError传入一个调用者不期望的值
.
1 ArithmeticError 2 AssertionError 3 AttributeError 4 BaseException 5 BufferError 6 BytesWarning 7 DeprecationWarning 8 EnvironmentError 9 EOFError 10 Exception 11 FloatingPointError 12 FutureWarning 13 GeneratorExit 14 ImportError 15 ImportWarning 16 IndentationError 17 IndexError 18 IOError 19 KeyboardInterrupt 20 KeyError 21 LookupError 22 MemoryError 23 NameError 24 NotImplementedError 25 OSError 26 OverflowError 27 PendingDeprecationWarning 28 ReferenceError 29 RuntimeError 30 RuntimeWarning 31 StandardError 32 StopIteration 33 SyntaxError 34 SyntaxWarning 35 SystemError 36 SystemExit 37 TabError 38 TypeError 39 UnboundLocalError 40 UnicodeDecodeError 41 UnicodeEncodeError 42 UnicodeError 43 UnicodeTranslateError 44 UnicodeWarning 45 UserWarning 46 ValueError 47 Warning 48 ZeroDivisionError
如果错误发生的条件是可预知的需要用if进行处理,在错误发生之前预防
发生的条件不可预知,需要用到try...except:错误发生后处理
异常处理格式有
try...except...
try...except...except...
try...except...else...
try...except...finally...
C/S架构的软件是基于网络进行通信的
网络的核心即一对协议,想要开发基于网络通信的软件,就必须遵循这些标准
互联网协议的功能:定义计算机如何接入Internet,以及接入Internet的计算机通信的标准
osi七层协议:应用层,传输层,网络层,网络接口层,应用层分为应用层,表示层会话层,网络接口层分为数据链路层,物理层
物理层功能:主要是基于电气特性发送高低电压(电信号),高电平1,低电平0
数据链路层:单纯地电信号0或1毫无意义,必须规定电信号多少位一组,魅族什么意思,
数据链路层的功能就是定义了电信号的分组方式
以太网协议:ethernet规定
一组电信号构成一个数据包,叫做帧
每一数据帧分成:报头head和数据data两部分
head包含(固定18个字节)
发送者/源地址:6个字节
接收者/目标地址:6个字节
数据类型,6个字节
data包含:(最短46,最长1500字节)
数据包的具体内容
head长度+data长度 = 最短64字节,最长1518字节,超过最大限制就分片发送
mac地址:
head中包含的源和目标地址由来:ethernet规定接入Internet的设备都必须具备网卡,发送端和接收端的地址便是指
网卡的地址,即mac地址
mac地址:每块网卡出厂时都被烧制上世界上唯一的mac地址,长度为48位2进制,通常由12位16进制数表示,前六位
是厂商编号,后六位是流水线号
广播:有mac地址,同一网络的两台主机就可以通信(一台主机通过arp协议获取另外一台主机的mac地址)
ethernet采用最原始的方式,广播的方式进行通信