异常
错误发生的信号
程序一旦出错,如果程序中还没有相应的处理机制,
那么该错误就会产生一个异常抛出来,程序的运行也会随之终止
一个异常的三个部分:
1.异常的追踪信息
2.异常的类型
3.异常的值
异常也分很多种,我们举两个例子来说
#异常分类 # 语法异常(这异常在程序执行前就改正) try: x except NameError: print('语法异常') # 逻辑异常 try: l=[] l[1] except IndexError: print('逻辑问题')
Exception(万能异常)
# 万能异常
try:
x=0
y
print('====>')
l=[]
l[1]
dic={'a':0}
dic['b']
except Exception as e:
print('万能异常123',e)
# 结果 万能异常123 name 'y' is not defined
try:
x=0
print('====>')
l=[]
l[1]
dic={'a':0}
dic['b']
except Exception as e:
print('万能异常123',e)
#结果 ====>
# 万能异常123 list index out of range
try...else...(else不能单独使用,必须与except连用)
在被检测的代码块没有出现任何异常的情况下执行
#try...else... try: print('我没有异常') except Exception: print('万能异常') else: print('海草,海草,海草 浪花里舞蹈')
try...finally..
无论有没有异常发生,都会执行
#try..finally try: x = 0 print('====>') l = [] l[1] dic = {'a': 0} dic['b'] except Exception: print('万能异常123') finally: print('大大大,大哥别杀我')
主动触发异常
raise
# raise NameError class Peopel: def __init__(self,name): if not isinstance(name,str): raise TimeoutError('%s必须是str类型'%name) self.name=name p=Peopel(123)
断言
# 断言 print('part1........') stus=['egon','alex','wxx','lxx'] # stus=[] if len(stus) <= 0: raise TypeError assert len(stus) > 0 print('part2.........') print('part2.........') print('part2.........') print('part2.........') print('part2.........') print('part2.........')
自定义异常
# 自定义异常 class RegisterError(BaseException): def __init__(self,msg,user): self.msg=msg self.user=user def __str__(self): return '<%s:%s>' %(self.user,self.msg) raise RegisterError('注册失败','teacher')
网络编程
1.C/s,B/s架构
client<---->server
browser<---->server
学习socket编程就是要编写一个客户端软件和服务端软件
然后实现服务端与客户端基于网络通信
2.什么是网络?
1.物理连接介质
2.互联网协议
互联网协议就是
osi七层协议
物理层功能:主要是基于电器特性发送高低电压(电信号),高电压对应数字1,低电压对应数字0
数据链路层:以太网
- 一组电信号构成一个数据包,叫做‘帧’
- 每一数据帧分成:报头head和数据data两部分
- mac地址:每块网卡出厂时都被烧制上一个世界唯一的mac地址
网络层 ip地址
传输层 端口
用户层 软件
我就可以通过mac+lp+端口,就可以定位世界上任意一个独一无二的软件