【发布时间】:2014-06-27 14:03:18
【问题描述】:
考虑filterNot的实现(基本上与filter相反):
def filterNot(f, sequence):
return filter(lambda x: not f(x), sequence)
参数f可以是“函数”或“方法”或lambda——甚至是类定义__call__的对象。
现在考虑这个参数的一行文档字符串:
:param ??? f: Should return True for each element to be abandoned
现在,应该用什么代替 ??? -- 参数f 的type 应该如何在文档字符串中引用。 callable 是显而易见的选择(如果我发号施令,我会发号施令:P),但是否有既定惯例?
【问题讨论】:
-
值得注意的是,函数、方法和 lambda 都只是通过不同方法生成的函数——它们本身并没有什么特别之处。
-
@200OK 这与问题所问的内容无关。
-
callable对我来说似乎很好,并且可能是最好的——如果您的文档生成引擎不喜欢这样,function可能是下一个最好的选择。毕竟,在 python 中,假设对象只需要表现就像函数记录的任何类型一样。 -
@Lattyware 非正式地,它们都是函数,因为它们是可调用的。但是,有不同的类型
function(由lambda表达式和def语句创建)、instancemethod(实例或类方法)和builtin_function_or_method(直接在 C 中实现,而不是通过 Python 代码实现) )。此外,其类型/类定义了__call__方法的任何对象都是可调用的,而不是前面提到的任何类型。因此,值得有一个包含所有的术语。 -
@chepner 哦,事实上,我并不是说不需要一个通用术语,我只是指出函数和 lambda 是相同的项目,只是通过不同的方式构造。 (并且方法本质上只是修饰函数)。它不是用来改变问题的,只是一个感兴趣的说明。
标签: python types documentation docstring function-declaration