什么是 assert 呢?其实不止 Python ,很多主流的语言都有 assert ,它主要是用来检测调试你的代码问题,当你使用 assert 来检测你的代码的时候,如果是 True ,它就会直接通过,当它是 False 的时候,就会抛出错误,然后你就可以根据错误进行定位,从而在具体的位置修改代码。怎么使用 assert 呢?assert 的使用是这样,使用 assert 关键字,后面添加条件就可以了:

assert 条件

看下这样简单的例子你就明白了:

可以看到当条件为 True 就直接通过了, False 就抛出 AssertionError。通常情况下, assert 条件为 Fasle 之后,后面还可以添加你自定义的错误信息:

assert 条件 , “你定义的错误信息”

像这样:

其实 assert 相当于这样:

所以,当你对某些操作能够肯定它什么是对的,什么是错的时候,你就可以在代码中使用 assert 进行检测,比如说有一个方法,需要传入 int 参数,但是它不能为 0 ,那么你就可以这样:

还有些时候对参数类型的检测也可以使用 assert ,通过 isinstance 进行判断,像这样:

当我们传入 list 类型没问题,但是传入别的类型就会告诉我们错误信息:

在使用 assert 的时候,有一点需要注意的是,通过命令来运行的时候,使用 python3 -O xxx.py 可以直接忽略掉 xxx.py 文件中所定义的所有 assert。比如在上面的例子中,我传入的不是 list 类型,但是我使用命令添加了 -O 选项,就会忽略我的 assert :

所以你在使用 assert 的时候要注意一点的是,如果你对一些条件是能够确定的,可以使用 assert ,但是对于一些涉及到对数据的增删改的时候,最好就不要去使用 assert 了,比如这样:

在正常的运行下,这样的操作可以在一定程度上避免了用户和权限相关问题,但是如果我们直接用 python3 -O xxx.py 执行, assert 瞬间失去了作用,那这时候是不是就可以直接 update 了呢?显然这样做是有 bug 的。所以对于涉及到数据的增删改,还是用我们之前说过的 try…except,raise 对代码进行异常解决为好。而对于一些数据类型的检测以及你已知的条件断言,直接使用 assert 可以让你的代码更加健壮一些。ok,以上就是小编今天给你带来的分享,希望对你有一丝丝帮助,那么我们会下回见咯,peace!

python中assert是什么意思_你常常看到 Python 代码中的 assert 是个啥?相关推荐

  1. 使用Python画出ROC曲线后,如何在ROC曲线代码中增加95%CI?

    使用Python画出ROC曲线后,如何在ROC曲线代码中增加95%CI? 计算AUC之后,大部文献都会给出95%CI,如何在代码中增加这一功能呢?希望有大神给出代码!!!! 代码如下: import ...

  2. python以某种编码进行打印_如何在一场面试中展现你对Python的coding能力?

    (点击上方快速关注并设置为星标,一起学Python) 来源:Python数据科学    链接: https://mp.weixin.qq.com/s/KwjLpeRT4l-pOc_iRCLWzg 如果 ...

  3. python在建筑施工方面的应用_有哪些关于 Python 在建筑中的应用和教程?

    2018.02.09更新 (發現距離上一次更新馬上就要兩年了--) 嗯,兩年間發生了很多事.我也莫名其妙跑到ETH來了. 做起了Fab的優化,python已經完全不能滿足效率和複雜度的要求,走上了C+ ...

  4. python flask与django的区别_真正搞明白Python中Django和Flask框架的区别

    Django和Flask的区别 1.形象类比 如果Django类似于精装修的房子,自带豪华家具.非常齐全功能强大的家电,什么都有了,拎包入住即可,十分方便. 而Flask类似于毛坯房,自己想把房子装修 ...

  5. python中一个范围怎么表示_我应该如何处理Python中的包含范围?

    我在一个领域工作,在这个领域中,范围通常被包括在内地描述.我有人类可读的描述,例如from A to B,它表示包含两个端点的范围,例如from 2 to 4表示2, 3, 4. 在Python代码中 ...

  6. 如何解决python中编码错误的问题_【总结】Python 2.x中常见字符编码和解码方面的错误及其解决办法...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 对于Python解析器 而Python解析器所干的事情,就是: Python解析器,根据当前的所用的字符串编码类型 此字符串编码类型,是你自己所设置的 不 ...

  7. python中的画布背景设置_教你用python画图—Turtle详细教程

    Turtle模块绝对是吸引非专业代码开发者人员学习python入门的好工具 通过turtle几行代码的执行软件就会画出漂亮的图形,美观而且有成就感,这样一下子对python编程就产生了兴趣. 这些漂亮 ...

  8. 关于python字符编码以下选项中描述错误的是_关于import引用,以下选项中描述错误的是...

    [单选题]11.自动化分析仪中采用同步分析原理的是:() [单选题]以下选项中,不是Python语言合法命名的是 [单选题]下列选项中可以获取Python整数类型帮助的是 [单选题]下面代码的输出结果 ...

  9. 属于python语言中合法的二进制整数是_以下选项属于 Python 整数类型的是( )

    [单选题]3*1**3 表达式输出结果为________ [多选题]以下的布尔代数运算正确的是( ) [单选题]下列________不是Python的数据类型. [单选题]下列不是Python语言关键 ...

最新文章

  1. 微信支付回调重复通知,正确的响应
  2. RabbitMQ和Kafka到底怎么选?
  3. OpenCV-Python我刚写六行代码就出了个惊天BUG
  4. 在MVC的cshtml视图页获取默认路由下的ID值的方法
  5. 在Windows2003下搭建FTP服务器
  6. 安装配置Statspack
  7. spring mvc拦截器和mvc:annotation-driven /的详解
  8. npm/cnpm install是啥意思
  9. 【Vue】样式穿透 ::v-deep的具体使用
  10. 下载完apk安装包后实现自动安装;
  11. linux驱动系列之挂载(转)
  12. matlab俄罗斯方块说明,俄罗斯方块MATLAB版的代码
  13. elcom协议_物联网@电力系统通信协议
  14. 最大子矩阵问题----悬线法
  15. 4g网络什么时候淘汰_4g网络手机。什么时候淘汰
  16. 分享几个影视采集网站
  17. C语言利用差分法求解泊松方程
  18. cαr怎么发音_【英语拼读发音规则】连读、略读、重读、断句、语调……
  19. 只需这篇文章java线程池原理便懂了!♥♥
  20. poj2942 圆桌骑士(点双连通分量+二分图染色法判奇环)

热门文章

  1. 曲面积分的投影法_在家学|第一类曲面积分与第二类曲面积分的计算
  2. 当谈判处于下风怎么办?五大策略助你逆势翻盘
  3. matlab中如何对一组复数频域信号进行快速傅里叶逆变换
  4. 一文带你了解移动入库指南(详细版)
  5. 时间序列 预处理 python_时间序列算法理论及python实现(1-算法理论部分)
  6. 资讯类App主流框架(一)
  7. 最新kali之nmap
  8. 面试被问离职原因,别乱说
  9. QT应用编程: 域名解析(域名转IP)
  10. 图片的轮播(轮播图)