2024-04-26 11:15:30 发布
网友
如标题所述
我希望如此
assert 1,2 == (2,3)
引发一个AssertionError,但它没有。在
AssertionError
也没有
有人知道为什么吗?在
更详细地说
def func(): assert 1,2 == (2,3)
这是上述函数的dis.dis输出:
dis.dis
如您所见,POP_JUMP_IF_TRUE跳到16,它完全跳过AssertionError。由于堆栈的顶部是1,所以它是JUMPs
POP_JUMP_IF_TRUE
1
JUMP
assert语法将检查逗号前面的内容,如果断言是False,那么接下来的内容将被打印出来。在
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, 2) == (2, 3), "Assertion failure !"
它被解析为assert 1和{}作为单独的参数。在
assert 1
assert 1与{}相同
你可以试试看
assert 0,1 == (0,1)这确实引起了。在
assert 0,1 == (0,1)
更详细地说
这是上述函数的
^{pr2}$dis.dis
输出:如您所见,
POP_JUMP_IF_TRUE
跳到16,它完全跳过AssertionError
。由于堆栈的顶部是1
,所以它是JUMP
sassert语法将检查逗号前面的内容,如果断言是
False
,那么接下来的内容将被打印出来。在试试看:
你需要做
assert (1, 2) == (2, 3), "Assertion failure !"
它被解析为}作为单独的参数。在
assert 1
和{assert 1
与{你可以试试看
assert 0,1 == (0,1)
这确实引起了。在相关问题 更多 >
编程相关推荐