1

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

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

该函数将接收任何类型的数据,但假设我只想接收“set”类型的参数,因为由于某种原因,在该函数内部我需要使用 add() 和 pop() 方法找到在任何“集合”中。我怎么能说这个函数只接受'set'类型的参数呢?

4

4 回答 4

2

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

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

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

try:
    ...
except:
    ...
于 2013-07-28T00:02:05.417 回答
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
于 2013-07-28T00:01:35.283 回答
0

使用以下内容:

 if isinstance(item, set):
     ...

此函数返回布尔值。

于 2013-07-27T23:59:04.673 回答
0

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

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

于 2013-07-28T00:20:31.757 回答