例如,如果您声明以下函数:
>>> def fun(a, b):
... a.pop()
... a.pop()
... b.add(a.pop())
... return b
...
该函数将接收任何类型的数据,但假设我只想接收“set”类型的参数,因为由于某种原因,在该函数内部我需要使用 add() 和 pop() 方法找到在任何“集合”中。我怎么能说这个函数只接受'set'类型的参数呢?
例如,如果您声明以下函数:
>>> def fun(a, b):
... a.pop()
... a.pop()
... b.add(a.pop())
... return b
...
该函数将接收任何类型的数据,但假设我只想接收“set”类型的参数,因为由于某种原因,在该函数内部我需要使用 add() 和 pop() 方法找到在任何“集合”中。我怎么能说这个函数只接受'set'类型的参数呢?
我想如果你想分配一个类型。您可以在函数中执行此操作:
if not isinstance(item, set):
raise TypeError()
否则,当发生非法操作时,您的代码将引发异常。这是合理的。try...except
或者,如果您不想要异常,可以将代码包装在 a 中:
try:
...
except:
...
您可以使用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
使用以下内容:
if isinstance(item, set):
...
此函数返回布尔值。
isinstance 是一种方式,正如其他人已经描述的那样。这自然需要与良好的自动化测试相结合。
我相信您也可以使用 Cython,它具有函数/方法参数的可选类型声明。