你常常看到 Python 代码中的 assert 是个啥?

在使用 assert 的时候,有一点需要注意的是,通过命令来运行的时候,使用 python3 -O xxx.py 可以直接忽略掉 xxx.py

推荐学习

你常常看到 Python 代码中的 assert 是个啥?

之前说过单元测试相关的用法,今天给你讲的这个也是经常会在代码中使用到的,倘若你看过一些 Python 的项目源代码,想必你应该会看到它的身影 —— assert

你常常看到 Python 代码中的 assert 是个啥?

什么是 assert 呢?

其实不止 Python ,很多主流的语言都有 assert ,它主要是用来检测调试你的代码问题,当你使用 assert 来检测你的代码的时候,如果是 True ,它就会直接通过,当它是 False 的时候,就会抛出错误,然后你就可以根据错误进行定位,从而在具体的位置修改代码。

怎么使用 assert 呢?

assert 的使用是这样,使用 assert 关键字,后面添加条件就可以了:

assert 条件

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

你常常看到 Python 代码中的 assert 是个啥?

可以看到当条件为 True 就直接通过了, False 就抛出 AssertionError。

通常情况下, assert 条件为 Fasle 之后,后面还可以添加你自定义的错误信息:

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

像这样:

你常常看到 Python 代码中的 assert 是个啥?

其实 assert 相当于这样:

if not condition:
    raise AssertionError()

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

你常常看到 Python 代码中的 assert 是个啥?

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

你常常看到 Python 代码中的 assert 是个啥?

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

你常常看到 Python 代码中的 assert 是个啥?

在使用 assert 的时候,有一点需要注意的是,通过命令来运行的时候,使用 python3 -O xxx.py 可以直接忽略掉 xxx.py 文件中所定义的所有 assert。

比如在上面的例子中,我传入的不是 list 类型,但是我使用命令添加了 -O 选项,就会忽略我的 assert :

你常常看到 Python 代码中的 assert 是个啥?

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

你常常看到 Python 代码中的 assert 是个啥?

在正常的运行下,这样的操作可以在一定程度上避免了用户和权限相关问题,但是如果我们直接用 python3 -O xxx.py 执行, assert 瞬间失去了作用,那这时候是不是就可以直接 update 了呢?显然这样做是有 bug 的。

所以对于涉及到数据的增删改,还是用我们之前说过的 try…except,raise 对代码进行异常解决为好。而对于一些数据类型的检测以及你已知的条件断言,直接使用 assert 可以让你的代码更加健壮一些。

ok,以上就是今天给你带来的分享,希望对你有一丝丝帮助,那么我们会下回见咯,peace!

作者:学习python的正确姿势

原文链接:https://mp.weixin.qq.com/s/g8-uCeyNdX_Nt1NAz3YJDA

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/82451.html

(0)
上一篇 2024-09-11 05:21
下一篇 2024-09-11 19:26

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信