【发布时间】:2013-07-28 00:56:48
【问题描述】:
例如,如果您声明以下函数:
>>> def fun(a, b):
... a.pop()
... a.pop()
... b.add(a.pop())
... return b
...
这个函数可以接收任何类型的数据,但假设我只想接收“set”类型的参数,因为在这个函数内部由于某种原因我需要使用方法 add() 和 pop()在任何“集合”中都可以找到。我怎么能说这个函数只接受'set'类型的参数呢?
【问题讨论】:
-
如果有人想将它用于
pop()和add()是有效操作但不是set的类型怎么办? -
你不知道——它不是 Pythonic,而且是个坏主意。 Python 是围绕鸭子类型设计的——可以做什么比它的类型更重要。尝试做你想做的事,如果它不起作用,捕获异常。
-
@Lattyware 你应该用它作为答案,这是一个很好的观点。
-
没错。这就是为什么 answer 不需要引发错误。默认行为已经引发了人类可读的错误。程序员可能正在考虑实现另一个函数来处理不同的类型。
标签: python types python-3.x parameters arguments