如何在不停止(中断)程序的情况下在Python中发出警告?

我正在处理一个问题,如何在Python中引发Warning,而不必让程序崩溃/停止/中断。

我使用以下简单的函数,只检查用户传递给它一个非零的数字。 如果用户通过一个零,程序应该警告用户,但是继续正常。 它应该像下面的代码工作,但应该使用类Warning(),Error()或Exception(),而不是手动打印出警告。

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

如果我使用下面的代码并将0传递给该函数,程序崩溃并且该值永远不会返回。 相反,我想程序继续正常,只是通知用户,他通过0的function。

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

关键是我希望能够testing一个警告已经被unittesttesting过了。 如果我只是简单地打印出来的信息,我不能用unittest中的assertRaises来testing它。

谢谢,托马斯

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

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

看到python文档: 这里