在 Python 中,如果传递了命令行优化选项
assert
或 -O
,则 -OO
语句不会生成任何代码。 typing.assert_never()
会发生这种情况吗?声明不会被优化的运行时断言是否安全?
考虑案例
from typing import assert_never
def func(item: int | str):
match item:
case int():
...
case str():
...
case _:
assert_never(item)
是否保证默认分支即使在优化模式下也能工作?
不,
assert_never
不受优化模式影响。这是因为 assert_never
不是 assert
陈述。相反,它是来自 typing
模块的运行时函数,无论优化如何,在调用时始终运行。
是的,即使 Python 在优化模式下运行,
default branch
仍将按预期运行。这是因为在这种情况下使用 assert_never
是函数调用,而不是 assert
语句。
希望这对你有一点帮助。