Python技巧--02(assert断言)

断言是什么

Python assert(断言)用于判断一个表达式,在表达式条件为 false 的时候触发异常。

运用断言

example1(商店打折):


def apply_discount(product, discount):
    price = int(product['price'] * (1.0 - discount))
    assert 0 <= price <= product['price']
    print(price)

shoes = {'name': 'nike', 'price': 1499}

apply_discount(shoes,0.25)
=> 1124

apply_discount(shoes,2)
=>  Traceback (most recent call last):
        File "/Users/sangyuming/Desktop/test.py", line 20, in <module>
            apply_discount(shoes, 2.5)
        File "/Users/sangyuming/Desktop/test.py", line 13, in apply_discount
            assert 0 <= price <= product['price']
    AssertionError

example2(判断类型):

type_str = 'asdfasdf'

assert type(type_str) == str
=>

assert type(type_str) == int
=>
Traceback (most recent call last):
  File "/Users/sangyuming/Desktop/test.py", line 24, in <module>
    assert type(type_str) == int
AssertionError

断言语法

assert [表达式]

等价于:

if not [表达式]:
    raise AssertionError

由此可知,[表达式] 实际是if的判断语句

使用场景

断言不可不用,但也不能乱用

常见错误的用法是把断言当做一个检测错误的的触发条件,把它当做try..except

正确的使用场景如下:

  1. 在代码测试时使用
  2. 对代码单元逻辑的检测
  3. 对于复杂程序的类型、常量、条件的检测

原文地址:https://www.cnblogs.com/sangyuming/p/11686797.html

时间: 2024-11-25 16:43:15

Python技巧--02(assert断言)的相关文章

pytest自动化7:assert断言

前言:assert断言就是将实际结果和期望结果做对比,符合预期结果就测试pass,不符合预期就测试failed. 实例1:简单断言 实例1优化版--增加异常信息文字描述 异常断言 excinfo 是一个异常信息实例,它是围绕实际引发的异常的包装器.主要属性是.type. .value 和 .traceback 注意:断言type的时候,异常类型是不需要加引号的,断言value值的时候需转str ---------------------------------------------------

python assert断言函数

python assert断言是声明布尔值必须为真的判定,如果发生异常就说明表达式为假.可以理解assert断言语句为raise-if-not,用来测试表示式,其返回值为假,就会触发异常. self.assertEqual(a,b,msg=msg)   #判断a与.b是否一致,msg类似备注,可以为空 self.assertNotEqual(a,b,msg=msg)  #判断a与b是否不一致 self.assertTrue(a,msg=none)    #判断a是否为True self.asse

python之异常处理,断言和反射

1.异常基础 python在运行过程中,程序解释机制会测试代码,如检测不通过则会抛出异常. try: aa = 10 bb = '10' cc = aa + bb except Exception as e: print('error:',e) #output输出异常,数字不能与字符向加 error: unsupported operand type(s) for +: 'int' and 'str' try: aa = 10 bb = '10' cc = aa + bbexcept TypeE

assert断言用法

使用assert断言是学习python一个非常好的习惯,python assert 断言句语格式及用法很简单.在没完善一个程序之前,我们不知道程序在哪里会出错,与其让它在运行最崩溃,不如在出现错误条件时就崩溃,这时候就需要assert断言的帮助.本文主要是讲assert断言的基础知识. python assert断言的作用 python assert断言是声明其布尔值必须为真的判定,如果发生异常就说明表达式为假.可以理解assert断言语句为raise-if-not,用来测试表示式,其返回值为假

Spring Assert断言工具类

Spring 中 org.springframework.util.Assert 类实现合法性检测,Assert的方法如下: 断言方法说明: 1. notNull(Object object)  当 object 不为 null 时抛出异常,notNull(Object object, String message) 方法允许您通过 message 定制异常信息.和 notNull() 方法断言规则相反的方法是 isNull(Object object)/isNull(Object object

C++ ASSERT() 断言机制

C++ ASSERT() 断言机制 ASSERT()是一个调试程序时经常使用的宏,在程序运行时它计算括号内的表达式,如果表达式为FALSE (0), 程序将报告错误,并终止执行.如果表达式不为0,则继续执行后面的语句.这个宏通常原来判断程序中是否出现了明显非法的数据,如果出现了终止程序以免导致严重后果,同时也便于查找错误. 原型定义: #include <assert.h> void assert( int expression_r_r_r ); assert的作用是现计算表达式 expres

python 初学02 替换文件内容

用python替换文件内容的方法,搜了网上许多例子,又请教了朋友. 把完整的实现流程写一下,希望对大家有所帮助. 要求:目标文件中有一个字段为no=x x为0.1.2……,将其替换为no=0 1 import re 2 fobj = open("goal.ini", "r") 3 f = re.sub("no=\d+", "no=0", fobj.read()) 4 fobj.close() 5 fobj = open(&qu

Spring Assert断言 (方法入参检测工具类-断言)

Web 应用在接受表单提交的数据后都需要对其进行合法性检查,如果表单数据不合法,请求将被驳回.类似的,当我们在编写类的方法时,也常常需要对方法入参进行合 法性检查,如果入参不符合要求,方法将通过抛出异常的方式拒绝后续处理.举一个例子:有一个根据文件名获取输入流的方法:InputStream getData(String file),为了使方法能够成功执行,必须保证 file 入参不能为 null 或空白字符,否则根本无须进行后继的处理.这时方法的编写者通常会在方法体的最前面编写一段对入参进行检测

ASSERT断言

ASSERT断言 编写代码时,我们总是会做出一些假设,断言就是用于在代码中捕捉这些假设,可以将断言看作是异常处理的一种高级形式.断言表示为一些布尔表达式,程序员相信在程序中的某个特定点该表达式值为真.可以在任何时候启用和禁用断言验证,因此可以在测试时启用断言,而在部署时禁用断言.同样,程序投入运行后,最终用户在遇到问题时可以重新起用断言. 代码执行之前必须具备的特性: assert是宏,而不是函数: 使用断言可以创建更稳定,品质更好且不易于出错的代码. 断言语句不是永远会执行,可以屏蔽也可以启用