菲洛嘉青春动能素135HA FILLMED® NCTF 135HA LED指示灯的常见故障分析 智微智能 Elkhartlake K075终端,零售产业新选择 天空蓝拓客管理系统详细介绍版 muso公链项目 天使计划 是什么?[秘] 独家揭秘最前沿的家装“黑科技”——掌赋 天博体育欧洲杯特辑,东道主法兰西的失意2016 亚马逊的送货侦察员 学习听起来像挡泥板 Google Comics Factory使ML变得容易 笑着说-男性或女性 Amazon Rekognition中更好的人脸检测 关于Spaun的真相-大脑模拟 两个聊天机器人彼此聊天-有趣又怪异 GANPaint:将AI用于艺术 WCF和WF给予社区 从耳朵到脸 所有神经网络的深层缺陷 蠕虫在尾巴上平衡杆子 Kickstarter上的OpenCV AI套件 TensorFlow-Google的开源AI和计算引擎 众包取代新闻工作者 Google的DeepMind学会玩街机游戏 哑机器人V智能机器人 .NET与.NET 5融为一体 Google的深度学习-语音识别 LInQer将.NET LINQ移植到Javascript 机器人TED演讲-新的图灵测试? GAN的发明者加入苹果 您的智能手机会监视您键入的内容 人工智能帮助改善国际象棋 Zalando Flair NLP库已更新 TensorFlow 1.5包含移动版本 AlphaGo输了一场比赛-比分3-1 虚拟机器学习峰会 Microsoft开源AI调试工具 SharePoint走向移动 F#4.0发出文化变革的信号 克里斯蒂拍卖AI艺术品 人工智能如何区分 Facebook在蒙特利尔的新AI实验室 Mozilla想要您的声音 微软使用极深的神经网络赢得ImageNet 建立AI合作伙伴关系 .NET Core 3-Microsoft几乎回到了起点 神经网络-更好的销售商? Google使用AI查找您的住所 虹膜-适用于Android的Siri证明苹果没有优势 TensorFlow 2提供更快的模型训练 深度学习研究人员将为Google工作
您的位置:首页 >大数据 >

python assert

python中的assert命令通常在代码调试中会被使用,它用来判断紧跟着的代码的正确性,如果满足条件(正确),万事大吉,程序自动向后执行,如果不满足条件(错误),会中断当前程序并产生一个AssertionError错误。 它近似等同于如下代码:

if __debug__: if not expression: raise AssertionError

比如我们计算一个实际问题,我们经历了一系列的计算后得到了一个时间t值,这时我们就可以在代码中使用assert t >= 0来对我们获取到的时间t进行测试,如果t < 0,则与实际问题矛盾,这时就会产生一个AssertionError,我们就可以知道是我们的计算出现了问题,我们就可以回过头去修改前面的计算过程而不用再继续往下看了。可以让我们分段来检查自己书写的代码。

为了更好的了解assert的用法,请看如下代码:

class Debug:def mainProgram(self):x = int(input("Please input a integer: "))assert x > 5print(f"the value of x is: {x}")if __name__ == "__main__":main = Debug()main.mainProgram() """当我们输入6时,会打印出x的结果6result:Please input a integer: 6the value of x is: 6当我们输入5时,会被告知assert x > 5有问题,并且中断程序执行,产生AssertionError错误。result:assert x > 5AssertionError"""

上述代码完全等同于下面的代码:

class Debug:def mainProgram(self):x = int(input("Please input a integer: "))if x > 5:print(f"the value of x is: {x}")else:raise AssertionErrorif __name__ == "__main__":main = Debug()main.mainProgram() 

然而这样的assert报错提示并不完美,因为只是告知了assert x>5这一行出现错误,并没有文字性的错误提示。如果assert的内容比较复杂时,我们很可能会一时半会不知道错误的具体原因,这时我们应该采用assert的拓展提示功能,拓展功能等同于代码:

if __​debug__:if not <expression1>: raise AssertionError, <expression2>

具体例子代码如下:

class Debug:def mainProgram(self):x = int(input("Please input a integer: "))assert x > 5, "the value of x should greater than 5"print(f"the value of x is: {x}")if __name__ == "__main__":main = Debug()main.mainProgram()"""我们输入5,代码会标注出错误的行,以及我们设置的错误提示信息result:assert x > 5, "the value of x should greater than 5"AssertionError: the value of x should greater than 5"""

至此,assert的用法就基本结束了,但是我自己又探索了一下这个错误提示文字的运行机制。代码如下:

class Debug:def mainProgram(self):x = int(input("Please input a integer: "))assert x > 5, x <= 5print(f"the value of x is: {x}")if __name__ == "__main__":main = Debug()main.mainProgram()"""我们输入5,result:assert x > 5, x <= 5AssertionError: True"""

可以看到我们将assert后面本应该出现的文字提示部分改为了一个表达式x <= 5,这时的输出结果为AssertionError: True,我们输入5的时候assert x > 5不符合条件,因此会报错并且输出后面我们添加的错误提示信息,但是现在的错误提示信息是一个表达式,5 <= 5,表达式正确,表达式的结果应为True,结合我们上一个给出的字符串的错误提示,我们可以推断,这个我们附加的错误提示其实相当于执行了一个print()函数,在这个例子中,print(x < =5)的结果就会在屏幕上打印一个True。即上述代码等同于:

class Debug:def mainProgram(self):x = int(input("Please input a integer: "))if x > 5:print(f"the value of x is: {x}")else:print(x <= 5)if __name__ == "__main__":main = Debug()main.mainProgram()

如果大家觉得有用,请高抬贵手给一个赞让我上推荐让更多的人看到吧~

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。