我喜欢在断言失败时看到一些有意义的描述。
这是我的代码及其执行:
>cat /tmp/1.py
a="aaa" + "bbb"
print(a)
assert ("hello" + a) and 0
>python /tmp/1.py
aaabbb
Traceback (most recent call last):
File "/tmp/1.py", line 3, in <module>
assert ("hello" + a) and 0
AssertionError
我正在使用 Python 3.7。
你知道为什么 "hello"+ a
不作为字符串连接首先求值吗?我怎样才能做到?
[更新] 感谢所有回复,这是我要找的:
>cat /tmp/1.py
a="aaa" + "bbb"
print(a)
assert 0, "hello" + a
According to the docs ,失败消息后跟一个逗号:
assert some_condition, "This is the assert failure message".
这相当于:
if __debug__:
if not some_condition:
raise AssertionError("This is the assert failure message")
如评论中所述,assert
不是函数调用。不要添加括号,否则您可能会得到奇怪的结果。 assert(condition, message)
将被解释为一个元组被用作没有消息的条件,并且永远不会失败。
我是一名优秀的程序员,十分优秀!