如何在Python中使用assert和==?

2 投票
1 回答
1411 浏览
提问于 2025-04-18 03:33

我正在学习Python。我看到一个问题,问怎么修正这个:

def main():
    assert ___ == type("Hello World").__name__
    assert ___ == isinstance("Hello World", str)
if __name__=="__main__":
    main()

我试过:

__some__={}
def main():
    assert __some__ == type("Hello World").__name__
    assert __some__ == isinstance("Hello World", str)
if __name__=="__main__":
    main()

当我运行这个时,我得到了一个 AssertionError 错误:

Traceback (most recent call last):
  Line 6, in <module>
    main()
  Line 3, in main
    assert __some__ == type("Hello World").__name__
AssertionError

我发现 assert 是用来指定一个条件的,当这个条件不满足时,就会抛出一个异常。我甚至用了Python Tutor,但如果我写 assert somevariable,我就会得到一个断言错误。我不太明白怎么用 == 和 assert 来完成某个任务。

1 个回答

4

你在codepad.org上发布的代码是

__some__={}
def main():
    assert __some__ == type("Hello World").__name__
    assert __some__ == isinstance("Hello World", str)
if __name__=="__main__":
    main()

type("Hello World").__name__ 的结果是 'str',而 __some__{},所以它们当然不匹配。同样,isinstance("Hello World", str) 的结果是 True,所以也不匹配。你的条件都是假的,所以断言失败,抛出了AssertionError。如果你换成 assert 'str' == type("Hello World").__name__,就不会有异常,因为这个比较是对的。

另外,你不应该用像 __foo__ 这样的名字来声明自己的变量。按照惯例,这些名字是保留给Python创建的特殊变量的。

撰写回答