Python中是否有用于验证函数输入的内置异常?

3

我有一个函数,它期望其中一个参数是元组

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

是否有适用于表明t类型不正确的内置错误,还是我需要定义自己的错误?


1
你好!有什么变化吗?你更改了被接受的答案,是否有任何你觉得缺失的内容我可以添加? - Martijn Pieters
@MartijnPieters 我刚刚偶然发现了这个,我喜欢另一个答案中的 ValueError 添加/建议。 - NotAnAmbiTurner
1
当然,这是你的选择,总是可以的!只是想确认一下。请知道,你特别询问了关于“说t不是正确类型”的异常情况,而ValueError并不覆盖此类情况。 - Martijn Pieters
3个回答

11

是的,TypeError异常就是用于这种情况:

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

[...]

传递错误类型的参数(例如传递一个list而期望一个int)应该导致TypeError

您可能希望了解使用类型提示来及早捕获程序员错误传入的错误类型。例如,我们在语法检查时检查类型提示。


谢谢!我喜欢类型提示的想法,但我不确定如何在程序中验证类型提示(基本上,这将把Python转换为强类型语言,n'est pas?)。我还在做一个小项目,所以我不确定复杂性的成本是否能够抵消好处。 - NotAnAmbiTurner
@NotAnAmbiTurner,你可以通过使用外部工具静态地检查提示信息。这些提示信息在运行时不会被使用。 - Martijn Pieters
有成熟的类型检查器吗? - NotAnAmbiTurner
@mypy mypy 在 Facebook 已经成熟并且正在生产中使用。 - Martijn Pieters

1

是的,通常会使用TypeError表示此错误。或者如果参数类型正确但其值无效,则使用ValueError

在许多情况下(特别是使用TypeError时),您不必显式地引发这些错误;当您尝试执行类型不支持的操作时,它们会自然发生。


1
您可以使用TypeError异常。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接