`assert 1,2==(2,3)`在python3中不引发AssertionError

2024-04-26 11:15:30 发布

您现在位置:Python中文网/ 问答频道 /正文

如标题所述

我希望如此

assert 1,2 == (2,3)

引发一个AssertionError,但它没有。在

也没有

^{pr2}$

有人知道为什么吗?在


Tags: 标题assertassertionerrorpr2
3条回答

更详细地说

def func():
    assert 1,2 == (2,3)

这是上述函数的dis.dis输出:

^{pr2}$

如您所见,POP_JUMP_IF_TRUE跳到16,它完全跳过AssertionError。由于堆栈的顶部是1,所以它是JUMPs

assert语法将检查逗号前面的内容,如果断言是False,那么接下来的内容将被打印出来。在

试试看:

>>> assert 0,2 == (2,3)
Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
AssertionError: False

你需要做assert (1, 2) == (2, 3), "Assertion failure !"

它被解析为assert 1和{}作为单独的参数。在

assert 1与{}相同

你可以试试看

assert 0,1 == (0,1)这确实引起了。在

相关问题 更多 >