python断言assert实例_Python 拓展之断言(assert)

写在之前

大家好,这是首发在我公众号「Python空间」的第 60 篇文章,欢迎关注,期待和你的交流。

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

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

断言(assert)

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

>>> assert 'a' == 'a'

>>> assert 'a' == 'b'

Traceback (most recent call last):

File "", line 1, in 

AssertionError

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

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

class Account(object):

def __init__(self,num):

self.number = num

self.cnt = 0

def deposit(self,amount):

try:

assert amount > 0

self.cnt += amount

except:

print('the amount can not be zero.')

def withdraw(self,amount):

assert amount > 0

if amount <= self.cnt:

self.cnt -= amount

else:

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。b5ce94f73b617783938af0c75c1e12aad7332749.jpg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值