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

 

posted @ 2018-03-14 10:43  东郭仔  阅读(159)  评论(0)    收藏  举报