我试图在Python中发出警告,但不会使程序崩溃/停止/中断.

我使用下面的简单函数来判断用户是否向其传递了一个非零的数字.如果是这样,程序应该警告他们,但按照正常程序继续.它应该像下面的代码一样工作,但应该使用Warning()Error()Exception()类,而不是手动打印警告.

def is_zero(i):
   if i != 0:
     print "OK"
   else:
     print "WARNING: the input is 0!"
   return i

如果我使用下面的代码并将0传递给函数,程序就会崩溃,并且永远不会返回值.相反,我希望程序继续正常运行,并通知用户他已将0传递给函数.

def is_zero(i):
   if i != 0:
     print "OK"
   else:
     raise Warning("the input is 0!")
   return i

我希望能够测试unittest是否已经抛出警告.如果我只是将消息打印出来,就无法在unittest中使用assertRaises对其进行测试.

推荐答案

你不应该忽略警告,你应该使用warnings模块.提高它会产生错误,而不是警告.

Python相关问答推荐

日程优化问题不知道更好的方式来呈现解决方案- Python / Gekko

不同数据类型的Python成员变量不会在具有相同优先级的不同线程中更新

两极:如何分割一个大 pyramid 并并行保存每个

从 struct 类型创建MultiPolygon对象,并使用Polars列出[list[f64]列

在使用Guouti包的Python中运行MPP模型时内存不足

如何根据情况丢弃大Pandas 的前n行,使大Pandas 的其余部分完好无损

如何根据另一列值用字典中的值替换列值

运行回文查找器代码时发生错误:[类型错误:builtin_index_or_system对象不可订阅]

如何从在虚拟Python环境中运行的脚本中运行需要宿主Python环境的Shell脚本?

梯度下降:简化要素集的运行时间比原始要素集长

如何从数据库上传数据到html?

如何使用scipy的curve_fit与约束,其中拟合的曲线总是在观测值之下?

如果满足某些条件,则用另一个数据帧列中的值填充空数据帧或数组

提取相关行的最快方法—pandas

使用Python从URL下载Excel文件

为什么\b在这个正则表达式中不解释为反斜杠

判断solve_ivp中的事件

以逻辑方式获取自己的pyproject.toml依赖项

如何检测鼠标/键盘的空闲时间,而不是其他输入设备?

如何将数据帧中的timedelta转换为datetime