考虑一个filterNot
的实现(基本上是filter
的相反操作):
def filterNot(f, sequence):
return filter(lambda x: not f(x), sequence)
参数f
可以是一个"function"(函数)、"method"(方法)或者是lambda
(匿名函数),甚至可以是一个定义了__call__
的类的实例。
现在考虑该参数的文档字符串:
:param ??? f: Should return True for each element to be abandoned
现在,???应该填什么?-在docstring中如何引用参数f
的类型。 callable
是显而易见的选择(如果我有决定权,我会这样指示:P),但是否有已经确立的约定?
callable
对我来说很好,可能是最好的选择 - 如果您的文档生成引擎不喜欢它,那么function
可能是下一个最好的选择。毕竟,在 Python 中,假定对象只需要像函数所记录的类型一样 表现 即可。 - mgilsonfunction
(由lambda
表达式和def
语句创建)、instancemethod
(实例或类方法)和builtin_function_or_method
(直接在 C 中实现,而不是通过 Python 代码)。此外,任何其类型/类定义了__call__
方法的对象都是可调用的,而不属于前面提到的任何一种类型。因此,值得拥有一个涵盖所有这些内容的术语。 - chepner