day8-断言
一、概述
python中断言,这个我是第一次听说到的,断言有什么用呢?断言就是做一些程序的检查工作,就是在执行之前需要做的一些检查,比如类似于安检一样,合格的就能过,不合格的就不能过。也类似于银行转账工作,真正的转账之前是不是要检查用户各方面,是不是账号密码是不是都没有问题,转的钱必须没有问题,所以你在这个操作之前做一下检查。
二、知识点回顾
1、__new__方法:
先于__init__方法之前执行
2、__call__方法:
实例化之后加括号,去执行__call__方法
3、__metaclass__:
用来定义这个类是以怎样的形式被创建的
4、异常处理
1 try: 2 3 .... 4 5 except (ValueError,KeyError),e # in 2.7写法 6 7 except (ValueError,KeyError) as e # in3.X写法 8 9 except Exception as e :放在异常最后,上面抓不到的异常全走这个 10 11 else: #没有异常发生时,执行 12 13 finally,无论如何都执行 14 15 raise ValueError : 抛出异常
5、socket
协议:tcp/ip send,recv
udp
地址簇(family address):
AF.INET ipv4
AF.INET6 ipv6
AF.UNIX local
协议类型(socket type protocol):
socket.SOCK_STREAM tcp/ip
socket.SOCK_DGRAM 数据格式socket,for UDP
服务器端:
1 import socket,os 2 3 server=socket.socket() 4 server.bind(("localhost",9999)) 5 server.listen() 6 7 while True: 8 conn,addr = server.accept() 9 print("new conn",addr) 10 11 while True: 12 data =conn.recv(2048) 13 if not data: 14 print("yi duan kai") 15 break 16 17 print("zhi xing zhi ling:",data) 18 cmd_res = os.popen(data.decode()).read() 19 if len(cmd_res) == 0: 20 cmd_res="cmd no output" 21 size=str(len(cmd_res.encode())).encode() 22 conn.send(size) 23 cmd_res=cmd_res.encode() 24 conn.send(cmd_res) 25 26 27 server.close()
客户端
1 import socket 2 3 client=socket.socket() 4 5 client.connect(("localhost",9999)) 6 7 while True: 8 cmd =input(">>>:").strip() 9 if len(cmd) == 0: continue 10 client.send(cmd.encode()) 11 size=client.recv(2048) 12 13 14 print(size) 15 cmd_data=b'' 16 recv_size=0 17 print(size.decode()) 18 while recv_size < int(size.decode()): 19 cmd_res=client.recv(2048) 20 recv_size+=len(cmd_res) 21 cmd_data+=cmd_res 22 else: 23 cmd_data=cmd_data.decode() 24 print("recv_size",recv_size) 25 print("cmd_data",cmd_data) 26 27 28 client.close()
三、断言
作用:断言被用作你接下来的程序执行,如果后面程序依赖于前面的程序,后面的程序有很重要,就是后面的程序执行肯定不能出错,所以在执行之前要做检查工作。
本质:if ...else... 判断,逼格高。
1 a=2 2 assert type(a) is int 3 4 print("a 是整数") 5 6 7 #============== 8 if type(a) is int: 9 10 print("a 是整数") 11 12 else: 13 pass 14 15 #两种代码功能一样,逼格不一样
assert 出错
a="2"
if type(a) is int:
print("a 是整数")
else:
print("a 不是整数")
try:
assert type(a) is int
print("a 是整数")
except AssertionError as e:
print("a 不是整数")
===========输出信息--- 可以用 try ... ex
Traceback (most recent call last):
File "D:/51cto/day8/断言.py", line 23, in <module>
assert type(a) is int
AssertionError

浙公网安备 33010602011771号