鱼C论坛

 找回密码
 立即注册
查看: 1938|回复: 12

[已解决]断言的作用?

[复制链接]
发表于 2021-3-4 14:58:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
书上说assert是用来让程序在不符合条件时报错,那为什么不用try - expect或者if-else呢,assert可以被他们代替吗?
还有就是检查点时什么?
(我是新手,大神讲解请举栗子哈,谢谢)
最佳答案
2021-3-4 15:21:59
断言assert

可以用
  1. if not expression:
  2.     raise AssertionError
复制代码

替代

它最大的作用就是由你主动生成错误,终止程序。

在你做一个项目的时候

在上一个结果会影响下一个结果的情况下,你可以在上一个结果产出时通过设置断言来判断程序还有没有继续运行的价值

demo

  1. import random
  2. def fun1():
  3.     return random.randint(0,10)


  4. a = fun1()
  5. assert a
  6. b = fun1()

  7. c = b/a

  8. print(c)
复制代码

  1. Traceback (most recent call last):
  2.   File "C:\Users\admin\Desktop\test.py", line 9, in <module>
  3.     assert a
  4. AssertionError
  5. >>> a
  6. 0
复制代码


这个程序先生成分母,再生成分子

如果生成的分母是0的话,没有必要再去生成分子了,我们主动将程序报错
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-3-4 15:57:17 | 显示全部楼层
逃兵 发表于 2021-3-4 15:21
断言assert

可以用

那可不可以理解为:一旦报错,程序就不再运行
然后就比较好调试
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-4 16:01:36 | 显示全部楼层
柿子饼同学 发表于 2021-3-4 15:57
那可不可以理解为:一旦报错,程序就不再运行
然后就比较好调试

那如果是这样,让他直接报错不是更好吗,比如当文件存在时创建同名文件,不需要写断言,它自己就报错了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-4 16:20:41 | 显示全部楼层

那如果是这样,让他直接报错不是更好吗,比如当文件存在时创建同名文件,不需要写断言,它自己就报错了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-4 16:30:23 | 显示全部楼层
谢谢谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-4 17:33:39 | 显示全部楼层
逃兵 发表于 2021-3-4 17:07
你说的这种情况确实不需要写断言,因为程序自己会识别报错

而断言是你自己在程序中所设定的错误,你自 ...

那具体该怎么写呢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-4 18:07:09 | 显示全部楼层

谢谢,学到了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-31 04:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表