我想知道我所做的是否是一种适当的断言方法。我正在尝试为 Python 的风格指南制作一些既简洁又非常正确的东西。
try:
assert self.port_number == 0
assert self.handle == None
assert isinstance(port_number, int) or isinstance(port_number, float)
assert port_number > 0
except AssertionError:
return -1
*body of code*
return 0
上面是我的代码的摘录,显示了我如何处理参数断言。您可以假设我已经介绍了所有必要的断言,并且输入是 port_number。这被认为是好的风格吗?有没有更好的办法?
The assert
语句只能用于检查程序的内部逻辑,而不能用于检查用户输入或环境。引用最后两段http://wiki.python.org/moin/UsingAssertionsEffectively http://wiki.python.org/moin/UsingAssertionsEffectively ...
断言应该not用于测试可以的失败案例
由于错误的用户输入或操作系统/环境而发生
失败,例如找不到文件。相反,你应该提出一个
异常,或打印错误消息,或任何适当的内容。一
断言只能用于自测试的重要原因
该程序的特点是可以在编译时禁用断言。
如果 Python 使用 -O 选项启动,则断言将是
被剥离且未评估。因此,如果代码大量使用断言,
但对性能至关重要,那么就有一个系统可以将它们转向
在发布版本中关闭。 (但是不要这样做,除非它真的
必要的。科学证明,有些错误只会出现
当客户使用机器并且我们希望断言能够提供帮助时
也。 )
考虑到这一点,实际上永远没有理由在用户代码中捕获断言,因为断言失败的全部目的是尽快通知程序员程序中存在逻辑错误。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)