博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
day8-断言
阅读量:5917 次
发布时间:2019-06-19

本文共 2095 字,大约阅读时间需要 6 分钟。

一、概述

  python中断言,这个我是第一次听说到的,断言有什么用呢?断言就是做一些程序的检查工作,就是在执行之前需要做的一些检查,比如类似于安检一样,合格的就能过,不合格的就不能过。也类似于银行转账工作,真正的转账之前是不是要检查用户各方面,是不是账号密码是不是都没有问题,转的钱必须没有问题,所以你在这个操作之前做一下检查。

二、知识点回顾

1、__new__方法:

  先于__init__方法之前执行

2、__call__方法:

  实例化之后加括号,去执行__call__方法

3、__metaclass__:

  用来定义这个类是以怎样的形式被创建的

4、异常处理:

  try:    ....  except (ValueError,KeyError),e    # in 2.7写法  except (ValueError,KeyError) as e   # in3.X写法  except Exception as e :放在异常最后,上面抓不到的异常全走这个  else: #没有异常发生时,执行  finally,无论如何都执行  raise ValueError  : 抛出异常

5、断言:

  下面单独讲

6、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

  服务端:

server = socket.socket(AF.INET,sock.SOCK_STREAM)server.bind((localhost,6969))server.listen()conn,addr = server.accept()  #每当和客户端建立一个连接,就会生成一个实例,这个实例的值赋给conn,这边会产生阻塞while True:    print("new conn",addr)    data = conn.recv(1024)  #官方推荐是8192,相当于8k    if not data:break  #客户端一断开,conn.recv收到的就都是空数据,就会进入死循环    print(data)    conn.send(data.upper())

   客户端:

client = socket.socket()clent.connect((serverip,6969))client.send(data)client.send(data)#这边可以发送多次data = client.recv(1024)

三、断言

作用:断言被用作你接下来的程序执行,如果后面程序依赖于前面的程序,后面的程序有很重要,就是后面的程序执行肯定不能出错,所以在执行之前要做检查工作。

3.1、断言关键字assert

class C(object):    def __init__(self):        self.name = "zhangqigao"c_obj = C()assert c_obj.name  == "zhangqigao"   #断言print("没有错误继续...")#输出没有错误继续...

3.2、断言出错

class C(object):    def __init__(self):        self.name = "zhangqigao"c_obj = C()assert c_obj.name  == "gaogao"   #断言出字符串不匹配print("没有错误继续...")#输出Traceback (most recent call last):  File "E:/PycharmProjects/pytest/day7/断言.py", line 10, in 
assert c_obj.name == "gaogao"AssertionError #报断言异常错误

 当然我们用我们之前的知识也是可以解决上面的问题,代码如下:

class C(object):    def __init__(self):        self.name = "zhangqigao"c_obj = C()if c_obj.name  == "gaogao":    print("有错误....")else:    print("没有错误继续...")

但是这个不仅增加了代码量,而且感觉还是比较low,这个就相当于你开着五菱之光的车,和开着特斯拉的区别。

转载于:https://www.cnblogs.com/zhangqigao/articles/7135708.html

你可能感兴趣的文章
SpringMVC 学习笔记(二) @RequestMapping、@PathVariable等注解
查看>>
Chrome应用技巧之颜色拾取
查看>>
Linux之通配符
查看>>
ios中摄像头和图片调用
查看>>
Visual Studio 2012出现“无法访问T-SQL组件和安装了不兼容伯 DacFx版本”的解决办法...
查看>>
JSTL I18N 格式标签库 使用之二_____读取消息资源
查看>>
聊聊NettyConnector的start及shutdown
查看>>
Raffi Krikorian 为“在运行中进行架构重写”提供了指南
查看>>
OneAPM挂牌新三板,续写ITOM新篇章
查看>>
通过源码解析 Node.js 中一个 HTTP 请求到响应的历程
查看>>
做了一点事,学到了一些
查看>>
CodeIgniter的密码处理论
查看>>
Tsuru 1.7.0-rc4 发布,基于 Docker 的 PaaS 框架
查看>>
正则表达式学习
查看>>
前端进阶之 a 可以同时 == 1 && == 2 && == 3吗?
查看>>
告别抽象的JS执行环境、作用域、作用域链、闭包
查看>>
9012到了!AI时代里,只会简单编程的你会怎么样?
查看>>
1月10日云栖精选夜读:专访金榕:四年蜕变,阿里iDST是如何登上浪潮之巅的?...
查看>>
如何使用jstack分析线程状态
查看>>
运营不需要人脉?
查看>>