'optimized' .pyo 文件不安全吗?



我惊恐地发现python -O剥离了assert语句。我在任何地方和任何地方都使用断言,并且我认为断言(就像一般的异常)是一种流控制形式。

Python人:python -O.pyo文件被认为是安全的吗?依赖断言是否不安全?

依赖断言不是一个好主意。使用断言作为流控制不是一个好主意。原因正如你所描述的:它们可以被禁用。文档说得很简单:

Assert语句是在程序中插入调试断言的一种方便的方法

断言用于调试,而不是在生产代码中依赖。

断言用于捕获错误,而不是用于流控制。因此,优化器完全可以把它们去掉,因为当你的代码发布时,这些bug应该已经被删除了。

如果你将它们用作通用异常引发器,我建议你使用它们是错误的。

Python Wiki上有一个很好的页面讨论这个问题,我特别指出最后一点:

断言应该只用于程序的自检的一个重要原因是断言可以在编译时禁用。

如果Python以-O选项启动,则断言将被剥离而不求值。因此,如果代码大量使用断言,但对性能至关重要,那么就有一个系统可以在发布版本中关闭它们。

相关内容

最新更新