【问题标题】:Is there a built-in Python Exception for validation of function input?是否有用于验证函数输入的内置 Python 异常?
【发布时间】:2017-08-13 17:51:44
【问题描述】:

我有一个函数,它需要一个元组作为参数之一

def func(x,
         t # t should be a tuple of a predefined type (str, bool, str)
         ):
    ...

是否存在适合说 t 类型不正确的内置错误,或者我应该定义自己的类型?

【问题讨论】:

  • 嗨!有什么改变吗?你交换了接受的答案,你觉得有什么我可以补充的吗?
  • @MartijnPieters 我只是随机遇到了这个问题,我喜欢另一个答案中的ValueError 添加/建议。
  • 当然,这是您的选择,永远!只是想检查一下。请注意,您专门询问了说 t 不是正确类型的例外情况,ValueError 不会涵盖该例外情况。

标签: python exception raise


【解决方案1】:

是的,这通常由TypeError 表示。或者,如果参数类型正确但其值无效,请使用ValueError

但在许多情况下(尤其是TypeError),您不必明确提出这些;当您尝试执行该类型不支持的操作时,它们会自然而然地发生。

【讨论】:

    【解决方案2】:

    是的,TypeError exception 就是专门用于这种情况的:

    当操作或函数应用于不适当类型的对象时引发。

    [...]

    传递错误类型的参数(例如,当需要 int 时传递 list)应该会导致 TypeError[.]

    您可能想研究使用type hinting,以尽早捕获程序员错误传递错误类型的错误。例如,我们在 linting 期间检查类型提示。

    【讨论】:

    • 谢谢!我喜欢类型提示的想法,但我不确定如何以编程方式实际验证类型提示(基本上,这会将 Python 变成一种强类型语言,n'est pas?)。我也在做一个小项目,所以我不确定复杂性的成本是否会被收益抵消。
    • @NotAnAmbiTurner 您将使用外部工具静态检查提示。在运行时不使用提示。
    • 谢谢 :) 不过有成熟的类型检查器吗?
    • @NotAnAmbiTurner mypy 在 Facebook 已经成熟并投入生产使用。
    【解决方案3】:

    可以使用 TypeError 异常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-21
      • 1970-01-01
      • 2012-04-15
      • 2012-10-25
      • 1970-01-01
      • 2020-05-19
      • 2016-12-08
      • 2012-05-23
      相关资源
      最近更新 更多