在不中断程序的情况下在 Python 中发出警告

新手上路,请多包涵

我试图在不使程序崩溃/停止/中断的情况下在 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 抛出警告对其进行测试。如果我只是打印消息,我无法在单元测试中使用 assertRaises 对其进行测试。

原文由 Tomas Novotny 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 577
2 个回答

你不应该 raise 警告,你应该使用 warnings 模块。通过提高它你会产生错误,而不是警告。

原文由 SilentGhost 发布,翻译遵循 CC BY-SA 3.0 许可协议

import warnings
warnings.warn("Warning...........Message")

请参阅 python 文档: 此处

原文由 necromancer 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题