python的assert,Python 拓展之断言(assert)

530cc4973ffee95170f520b4e48e45cc.png

本文字数:1267 字

阅读本文大概需要:4 分钟

写在之前

在昨天的文章中(零基础学习 Python 之处理异常)中学习了处理异常的正确姿势,今天我们继续来学习“错误 & 异常”里比较重要的一个知识点:「assert」。

assert 翻译成中文就是「断言」的意思,它是一句等价于布尔真的判断,如果它发生异常的话,意味着表达式为假。

断言(assert)

首先让我们先来看点简单的代码,从代码中理解 assert。

>>> assert 'a' == 'a'>>> assert 'a' == 'b'Traceback (most recent call last): File "", line 1, in AssertionError

assert 的应用场景很像它在汉语中的意思:当程序运行到某个节点的时候,就断定某个变量的值必然是什么,或者是对象必然拥有某个属性等。简单点来说的话,就是断定是什么东西就必然是什么东西,如果不是,就抛出异常。

接下来我们再来看一段稍微复杂点的代码:

classAccount(object):def__init__(self,num): self.number = num self.cnt = 0defdeposit(self,amount):try:assert amount > 0 self.cnt += amountexcept: print('the amount can not be zero.')defwithdraw(self,amount):assert amount > 0if amount <= self.cnt: self.cnt -= amountelse: print('cnt is not enough')

在上面的代码中,我们设置的是 deposit() 和 withdraw() 方法的参数 amount 必须大于零,这里用的就是断言,如果不满足条件的话就会直接报错。比如像下面这样来运行:

if __name__ == "__main__":a = Account(100)a.deposit(-10)

出现的结果如下所示:

the amount can not be zero.

这就是断言 assert 的引用,那么什么时候是引用断言的最佳时机呢?如果没有特殊的目的的话,断言主要应用于以下情况(参考《Python使用断言的最佳时机》):

1.防御性的编程;

2.运行时对程序逻辑的检测;

3.合约性检查(比如前置或者后置条件);

4.程序中的常量;

5.检查文档。

写在之后

assert 就这些东西,「错误 & 异常」到这差不多就结束了。异常处理是编程语言或者计算机硬件里的一种机制,用于处理软件或信息系统中出现的异常状况。

通过异常处理,我们可以对用户在程序中的非法输入进行控制和提示,以防程序崩溃。从进程的视角来看,硬件终端属于可恢复异常,虽然异常一般与程序流本身无关。

异常是一种很有用的机制,用于通知外界该子程序不能正常执行,比如输入的数据无效或者所需的资源不可用等,如果系统没有异常机制,则程序员需要用返回值来标示发生了哪些错误。

最后,如果你觉得本篇文章对你有所帮助的话,欢迎点赞转发,先行谢过。

The end。

举报/反馈

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值