python中assert是什么意思_你常常看到 Python 代码中的 assert 是个啥?_weixin_39672680的博客-程序员宝宝

技术标签: python中assert是什么意思  

什么是 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!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39672680/article/details/110629443

智能推荐

Retrofit 2.0 超能实践(三),轻松实现多文件/图片上传/Json字符串/表单_卖火柴的小男孩2020的博客-程序员宝宝

通过前两篇姿势的入门Retrofit 2.0 超能实践,完美支持Https传输 Retrofit2.0 完美同步Cookie实现免登录本文出自:http://blog.csdn.net/sk719887916/article/details/51755427 码小白如果嫌麻烦直接可以用我封装好的库:Novate: https://github.com/Tamicer/Novat...

python实现ssh端口转发_end for time的博客-程序员宝宝_python ssh 端口转发

nginx配置本地开发调式比如laravel框架的env配置文件,可以由nginx来配置环境变量,进而实现不同环境的不同配置,有deve由于mysql,redis这些都是不同的远程主机

Springboot多数据源配置详解_陌守的博客-程序员宝宝_springboot多数据源配置

Springboot多数据源配置详解概念配置多数据源使用概念一般来说,我们正常的业务只涉及一个数据源,在特定的业务场景中需要使用多个数据源的情况,就需要配置多个数据源来满足特定的业务需求。本文介绍的是:springboot 整合 dynamic-datasource 来实现多数据源的配置使用。注意:此处可以整合多种不同类型的数据库。配置1、引入 pom 依赖(主要依赖)<dependency> <groupId>com.baomidou</groupId&gt

vue项目实战(三)- 旅游网站详情页面开发_i小默的博客-程序员宝宝_vue 网站

一、详情页banner添加动态路由:{ path: '/detail/:id', name: 'Detail', component: Detail }详情页首图:<template> <div class="banner"> <img class="banner-img" src="//img1.qunarzz.com/sight/p0/1809/10/10d6568ad3ad4bb5a3.img.jpg

husky_gazebo没有/scan_贤贤贤贤小波的博客-程序员宝宝

系统:ubuntu 18.04ros:melodic启动仿真环境roslaunch husky_gazebo husky_playpen.launch安装的ros和husky都正常,但是偏偏没有/scan数据排查了很久后来发现目前版本是21年7月份更新的 0.4.10版本发现之前安装过的 0.4.8的版本是正常的,把旧版本替换新版本即可原本想通过apt安装旧版本,执行 apt-cache madison husky 发现只有0.4.10单版本,没有历史版本,换过 阿...

Linux 下的一个全新的性能测量和调式诊断工具 Systemtap, 第 2 部分: DTrace_ctthuangcheng的博客-程序员宝宝

DTrace的原理本系列文章详细地介绍了一个 Linux 下的全新的调式、诊断和性能测量工具 Systemtap 和它所依赖的基础 kprobe 以及促使开发该工具的先驱 DTrace 并给出实际使用例子使读者更进一步了解和认识这些工具。 本文是该系列文章之二,它详细地讲解了 DTrace 的原理。本系列文章之一讲解了 kprobe 的原理、编程接口、局限性和使用注意事项并给出实际使用示例帮助读者

随便推点

vue集成百度UEditor富文本编辑器_yejiang1015的博客-程序员宝宝

在前端开发的项目中。难免会遇到需要在页面上集成一个富文本编辑器。那么。如果你有这个需求。希望可以帮助到你vue是前端开发者所追捧的框架,简单易上手,但是基于vue的富文本编辑器大多数太过于精简。于是我将百度富文本编辑器放到vue项目中使用。效果图如下废话不多说。1、使用vue-cli构建一个vue项目。然后下载UEditor源码。地址:http://ueditor.baidu.com/website

Python解决插入数据库乱码问题_振长策而御宇内的博客-程序员宝宝

从网站上获取的信息要保存在本地数据库中,但是保存的过程中数据库的信息都变成了乱码,怎么解决呢?客官听我娓娓道来。首先,保证以下四项的编码都是utf-8:1. 代码2. 数据库连接3. 表的字符集格式4. 插入的数据格式每步的操作如下:1. 保证代码的格式是utf-8,在代码最前面加上这句话# -*- coding:utf8 -*-#首先用于确定编码,加上这

DirectX11 With Windows SDK--11 混合状态_weixin_30528371的博客-程序员宝宝

DirectX11 With Windows SDK--11 混合状态 原文:DirectX11 With Windows SDK--11 混合状态前言这一章会着重讲述混合状态,在下一章则会讲述深度/模板状态DirectX11 With Windows SDK完整目录Github项目源码欢迎加入QQ群: 727623616 可以...

day3-python-集合文件操作函数_weixin_30446197的博客-程序员宝宝

一、集合主要作用:去重关系测试, 交集\差集\并集\反向(对称)差集#!/usr/bin/env python# -*- coding:utf-8 -*-list_1 = [1,4,5,7,3,6,7,9]list_1 = set(list_1)list_2 = set([2,6,0,66,22,8,4])print(list_1,list_2)...

Windows密码复杂性要求_allway2的博客-程序员宝宝_密码必须符合复杂性要求

密码必须符合复杂性要求介绍 "密码必须满足复杂性要求" 安全策略设置的最佳做法、位置、值和安全注意事项。参考"密码必须满足复杂性要求" 策略设置确定密码是否必须满足一系列对强密码重要的指南。 启用此策略设置需要密码才能满足以下要求:在更改或创建密码时, 将强制执行复杂性要求。Windows Server 密码复杂性要求中包含的规则属于 Passfilt, 不能直接修改。启用...

NOIP2002-普及组复赛-第二题-级数求和_weixin_30345577的博客-程序员宝宝

题目描述Description  已知:Sn= 1+1/2+1/3+…+1/n。显然对于任意一个整数K,当n足够大的时候,Sn大于K。  现给出一个整数K(1<=k<=15),要求计算出一个最小的n;使得Sn>K。输入输出格式Input/output输入格式:一个正整数K。输出格式:一个正整数N。...

推荐文章

热门文章

相关标签