python中assert是什么意思_你常常看到 Python 代码中的 assert 是个啥?-程序员宅基地

技术标签: 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

智能推荐

Linux 信号量-程序员宅基地

文章浏览阅读452次。1、信号量定义信号量的取值可以是任何自然数,可用于实现多线程和多进程之间的临界资源访问安全和合理性,最常用的,最简单的信号量是二进制信号量,只有0和1两个值;信号量只能取自然数值并且只支持两种操作:等待§和信号(V).假设有信号量SV,对其的P、V操作如下:P,如果SV的值大于0,则将其减一;若SV的值为0,则挂起执行V,如果有其他进行因为等待SV而挂起,则唤醒;若没有,则将SV值加一资源计数>0;表示操作可行,可以对临界资源进行访问;直接返回,且资源计数-1;资源<=0;表.._linux 信号量

cron 表达式周一到周五执行以及只有周六周天执行_cron 周一到周五-程序员宅基地

文章浏览阅读4.4k次。目录前言需求描述原始设置办法周一到周五的每30分钟执行一次cron表达式周六到周天每分钟执行一次的cron表达式尽量在线测试一下:在线Cron表达式生成器 原始的cron表达式每天晚上跑,后来想优化下,周末没有人操作所以可以周末的时候增大执行效率!每天晚上8点-早晨7点,每隔30分钟执行一次:周一到周五的每30分钟执行一次cron表达式0 /30 20-7 ? * MON-FRI周六到周天每分钟执行一次的cron表达式 0 /1 * ? * SAT-SUN尽量在线测试一下:在线Cr_cron 周一到周五

windows pwn_winpwn-程序员宅基地

文章浏览阅读1.4k次,点赞4次,收藏6次。附件下载链接程序保护如下,没有开 GS 保护。程序是一个简单的栈溢出:利用方法如下:这里有几个易错点:64 位栈溢出附件下载链接和 32 位的程序相似,不过这里溢出字节数较少,需要栈迁移。ORW如果题目开启了 保护禁用了 ,那么我们就需要采用 ORW 的方式获取 flag 。Windows 中的 ORW 示例代码如下,其中 和 位于 , 位于 。由于传递的参数过多 gadget 不好找并且会导致 ROP 过长,因此采取 修改内存属性写 shellcode 的方式 进行 OR_winpwn

大话数据结构---最详细思维导图第2章算法概论_数据结构思维导图第二章-程序员宅基地

文章浏览阅读137次。认为写得好的小伙伴,做好点赞,收藏和转发_数据结构思维导图第二章

三维点云处理-KDTree和Octree-程序员宅基地

文章浏览阅读578次,点赞22次,收藏17次。点云数据主要是表征目标表面的海量点集合,并不具备传统实体网格数据的集合拓扑信息。因此,如何建立离散点间的拓扑关系,实现基于邻域关系的快速查找也是点云数据处理中比较核心的问题。对于一维数据来说,典型的树形存储结构如Binary Search Tree(BST),特点在于:对于树中的每个节点,其左子树中的所有节点的值都小于该节点的值,而右子树中的所有节点的值都大于该节点的值,即中序遍历是有序的。这种结构在执行搜索操作时效率较高,在平均情况下,如果树保持相对平衡,BST 的时间复杂度为 O(log n)。

关于vue-grid-layout vue 可拖拽缩放组件的使用 已经 vue-grid-layout和echarts结合的用法_vue3可拖拽缩放 echarts-程序员宅基地

文章浏览阅读4.1k次,点赞3次,收藏22次。关于vue-gird-layout 的使用方法规范<grid-layout // 网格初始化布局 数组 必填 每一项都必须具有i、x、y、w和h属性 :layout.sync="layout" // 表示网格有多少列 number 类型 非必填 默认为12 :col-num="12" // 表示_vue3可拖拽缩放 echarts

随便推点

mac电脑使用入门详解_mac入门-程序员宅基地

文章浏览阅读556次。大家来到MAC系统以后,首先在使用习惯以及界面上,都需要有一个适应的过程,小编为大家整理了这个小白教程,有助于你快速习惯这个MAC系统。讲个笑话: 我一朋友看到Mac界面很酷,就买了个Mac笔记本, 玩了几天后,操作很不习惯,就把Mac笔记本给卖了。这里我把一些常见的Mac技巧跟大家分享下, 并且写成一个系列,Mac新手看了可以很快上手。Mac 系统的桌面Mac 的桌面是一个很炫的3D, ..._mac入门

Nmap介绍及使用-程序员宅基地

文章浏览阅读1.4w次,点赞6次,收藏73次。一、简介1,设计目的:快速扫描大型网络/单个主机。2,如何实现:使用原始IP报文来发现网络上有哪些主机,主机提供什么服务,操作系统,使用什么类型的报文过滤器/防火墙,以及其他功能。3,nmap用途:常用于安全审核。许多系统管理员和网络管理员也用它来做一些日常的工作,比如查看整个网络的信息,管理服务升级计划。4, nmap脚本引擎NSE:可以添加自己的代码,打造自己的工具。nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪些服务运行在哪些连接端,并且推断计算机运行..._nmap

linux内核协议栈 邻居协议之通用邻居项的状态机机制【核心】_neigh_add netlink-程序员宅基地

文章浏览阅读1.4k次,点赞2次,收藏16次。1邻居几个核心状态邻居项的状态机机制是通用邻居层最重要的内容,主要是处理邻居项中状态的改变,其中包括几个邻居状态的定时器机制,以及邻居项的更新,solicit请求的发送等对于通用邻居项的状态机,主要有如下几个状态:NUD_INCOMPLETE NUD_REACHABLE NUD_STALE NUD_DELAY NUD_PROBE NUD_FAILED NUD_NOARP NUD_PERMANENT 其中,处于如下状态的邻居项,都会启动一个定时器:#define NUD.._neigh_add netlink

PHP模板引擎-程序员宅基地

文章浏览阅读37次。2019独角兽企业重金招聘Python工程师标准>>> ...

BLE-NRF51822教程13-连接时触发配对_nrf hid 设备不能和同一台电脑连续配对?-程序员宅基地

文章浏览阅读505次。最近答疑碰到几次都提到 需要实现手机每次连接上设备后,立刻出发配对并要求输入密钥的功能。 这里就单独写一个教程供大家参考下。 配对的目的是为了对链路进行加密。以提高蓝牙的传输安全。关于配对的一些相关知识在 静态密码/动态随机密码教程中有一些介绍。对于使用来说,理解一下配对相关流程就行了。 这里额外说个问道比较多的配对和绑定区别的问题:关于配对和绑定,一些人可能一直分不清楚他..._nrf hid 设备不能和同一台电脑连续配对?

Kubernetes网络隔离_serviceaccount/weave-net unchanged-程序员宅基地

文章浏览阅读649次。Kubernetes网络隔离Network Policies隔离手段:NetworkPolicy要在Kubernetes集群中使用NetworkPolicy,CNI网络插件必须维护一个NetworkPolicy Controller,支持Kubernetes 的NetworkPolicy。实现了NetworkPolicy的网络插件包括Weave和Calico等,但不包括Flannel。通过控制循环的方式对NetworkPolicy对象的增删改查作出响应,然后在宿主机上完成iptables规则的配置工作_serviceaccount/weave-net unchanged

推荐文章

热门文章

相关标签