gpt4 book ai didi

python - 为什么断言没有大量使用?

转载 作者:IT老高 更新时间:2023-10-28 20:22:15 25 4
gpt4 key购买 nike

我发现 Python's assert statement是捕捉 should never happen 情况的好方法.当相信代码正确时,可以通过 Python 优化将其删除。

这似乎是在 Debug模式下运行 Python 应用程序的完美机制。但是看看几个 Python 项目,如 django、twisted 和 zope,几乎从未使用过 assert。那么,为什么会这样呢?

为什么断言语句在 Python 社区中不常用?

最佳答案

我猜assert没有被更多使用的主要原因是没有人使用Python的“优化”模式

断言是检测编程错误的好工具,可以保护自己免受意外情况的影响,但所有这些错误检查都是有代价的。在 C/C++ 等编译语言中,这并不重要,因为断言仅在调试版本中启用,并从发布版本中完全删除。

另一方面,在 Python 中,debugrelease 模式之间没有严格的区别。解释器有一个“优化标志”(-O),但目前这实际上并没有优化字节码,而只是删除了断言。

因此,大多数 Python 用户只是忽略 -O 标志并在“正常模式”下运行他们的脚本,这是 一种 Debug模式,因为断言已启用并且__debug__True,但被认为是“生产就绪”。

也许切换逻辑会更明智,即默认情况下“优化”并且仅在显式 Debug模式下启用断言(*),但我想这会让很多用户感到困惑,我怀疑我们会不会看到这样的变化。

((*) 例如,Java VM 就是这样做的,通过一个 -ea(启用断言)开关。)

关于python - 为什么断言没有大量使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9097706/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com