代码之家  ›  专栏  ›  技术社区  ›  Colin

在python中使用assert的例子?

  •  9
  • Colin  · 技术社区  · 14 年前

    我已经读过何时使用断言与异常,但我仍然没有“理解它”。似乎每当我认为我处于应该使用assert的情况下,在开发的稍后阶段,我发现我在“在跳跃之前查看”以确保在调用函数时assert不会失败。由于还有另一个关于倾向于使用try-except的Python习惯用法,所以我通常会放弃断言并抛出异常。我还没有找到一个使用断言似乎是正确的地方。有人能举出一些好例子吗?

    4 回复  |  直到 14 年前
        1
  •  21
  •   Eli Bendersky    14 年前

    一个好的指导方针是 assert 当它的触发意味着 缺陷 在您的代码中。当您的代码假定某些内容并根据该假设进行操作时,建议使用 断言 . 这个 断言 失败意味着假设不正确,这意味着代码不正确。

        2
  •  15
  •   fseto    14 年前

    倾向于使用断言来检查 不应该发生 . 有点像健康检查。

    另一件要认识到的事情是 asserts 优化后删除:

    当编译时请求优化时,当前代码生成器不为assert语句发出任何代码。

        3
  •  3
  •   Jim Brissom    14 年前

    一般来说,assert用于验证您对代码的假设,即在此时,assert成功,或者您的实现有某种缺陷。异常是一种非常敏锐的期望错误发生并“接受”它,即允许您处理它。

        4
  •  3
  •   pberkes    14 年前

    一个很好的例子是检查函数的参数是否一致:

    def f(probability_vector, positive_number):
        assert sum(probability_vector) == 1., "probability vectors have to sum to 1"
        assert positive_number >= 0., "positive_number should be positive"
        # body of function goes here