我惊恐地发现删除python -O
了断言语句。我在任何地方和任何地方都使用断言,并且我认为断言(就像一般的异常一样)是一种流控制形式。
Python 人:python -O
和.pyo
文件被认为是安全的吗?依赖断言不安全吗?
我惊恐地发现删除python -O
了断言语句。我在任何地方和任何地方都使用断言,并且我认为断言(就像一般的异常一样)是一种流控制形式。
Python 人:python -O
和.pyo
文件被认为是安全的吗?依赖断言不安全吗?
断言是为了捕捉错误,而不是为了流量控制。因此,优化器将它们删除是完全有效的,因为在您的代码发布时,这些错误应该已经被删除。
如果您将它们用作通用异常引发器,我建议您错误地使用它们。
Python Wiki上有一个很好的页面讨论这个问题,我特别指出最后一点:
断言只能用于程序的自测试的一个重要原因是可以在编译时禁用断言。
如果 Python 以 -O 选项启动,则断言将被剥离而不被评估。因此,如果代码大量使用断言,但对性能至关重要,那么有一个系统可以在发布版本中关闭它们。