0

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

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

4

2 回答 2

5

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

断言语句是将调试断言插入程序的便捷方式

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

于 2013-06-07T04:46:43.440 回答
2

断言是为了捕捉错误,而不是为了流量控制。因此,优化器将它们删除是完全有效的,因为在您的代码发布时,这些错误应该已经被删除。

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

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

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

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

于 2013-06-07T04:46:34.690 回答