如何指定函数参数应该是特定的数据类型?

时间:2013-07-27 23:56:12

标签: python types python-3.x parameters arguments

例如,如果您声明以下函数:

>>> def fun(a, b):
...     a.pop()
...     a.pop()
...     b.add(a.pop())
...     return b
... 

这个函数会接收任何类型的数据,但是让我们只想接收类型为'set'的参数,因为在这个函数中由于某种原因我需要使用方法add()和pop()在任何'集'中都可以找到它。我怎么能说该函数只接受'set'类型的参数?

4 个答案:

答案 0 :(得分:2)

我想如果你想分配一个类型。您可以在函数中执行此操作:

if not isinstance(item, set):
    raise TypeError()

如果没有,您的代码将在非法操作发生时引发异常。这是合理的。或者,如果您不想要例外,可以将代码包装在try...except中:

try:
    ...
except:
    ...

答案 1 :(得分:1)

您可以使用isinstance()检查类型:

>>> def fun(a, b):
...     if not (isinstance(a, set) and isinstance(b, set)):
...         raise TypeError("Please only call this function with sets as the arguments")
...     a.pop()
...     a.pop()
...     b.add(a.pop())
...     return b

答案 2 :(得分:0)

使用以下内容:

 if isinstance(item, set):
     ...

此函数返回布尔值。

答案 3 :(得分:0)

isinstance是一种方式,正如其他人已经描述的那样。这自然需要与良好的自动化测试相结合。

你也可以使用Cython我相信,它有函数/方法参数的可选类型声明。