我惊恐地发现python -O
剥夺了断言陈述。我在任何地方和任何地方使用断言,我认为断言(如一般的例外)作为一种流控制形式。
Python用户:python -O
和.pyo
个文件是否安全?依赖断言是不安全的吗?
答案 0 :(得分:5)
依靠断言并不是一个好主意。将断言用作流控制并不是一个好主意。原因正如您所描述的那样:它们可以被禁用。 documentation只是简单地说:
断言语句是将调试断言插入程序
的便捷方式
断言用于调试,而不是在生产代码中依赖。
答案 1 :(得分:2)
断言用于捕获错误,而不是用于流量控制。因此,对于优化器来说它是完全有效的,因为在代码发布时,应该删除这些错误。
如果您将它们用作通用异常提升程序,我建议您错误地使用它们。
有一个很好的页面在Python Wiki上讨论这个问题,我特别指出了最后一点:
断言只应用于程序自检的一个重要原因是断言可以在编译时禁用。
如果使用-O选项启动Python,则断言将被删除而不进行评估。因此,如果代码严重使用断言,但性能至关重要,那么就有一个系统可以在发布版本中关闭它们。