gpt4 book ai didi

python - raise、try 和 assert 之间有什么区别?

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

我学习 Python 已经有一段时间了,raise 函数和 assert 是(我意识到它们都会使应用程序崩溃,不像 try - except)真的很相似,我看不出你会使用 raiseassert 而不是 try

那么,raisetryassert有什么区别呢?

最佳答案

statement assert可用于在运行时检查条件,但如果从 Python 请求优化,将被删除。扩展形式为:

assert condition, message

并且等价于:

if __debug__:
if not condition:
raise AssertionError(message)

在哪里 __debug__True 是 Python 不是 使用选项 -O 启动的。

所以语句assert condition, message类似于:

if not condition:
raise AssertionError(message)

两者都会引发 AssertionError。不同之处在于 assert condition, message 可以通过优化从执行的字节码中删除(启用这些优化时——默认情况下它们不会在 CPython 中应用)。相反,raise AssertionError(message) 在所有情况下都会被执行。

因此,如果代码在所有情况下都应该检查并在检查失败时引发 AssertionError,那么编写 if not condition: raise AssertionError 是必要的。

关于python - raise、try 和 assert 之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40182944/

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