考虑filterNot的实现(基本上与filter相反):

def filterNot(f, sequence):
    return filter(lambda x: not f(x), sequence)

参数f可以是“函数”或“方法”或lambda-甚至是其类定义__call__的对象。

现在考虑为该参数设置一行docstring:
:param ??? f: Should return True for each element to be abandoned

现在,应该用什么代替 ??? -如何在文档字符串中引用参数f的类型。 callable是显而易见的选择(如果我调用我:P,我会说些什么),但是是否有既定的约定?

最佳答案

是的,可调用一词是在此使用的术语。

The abstract base class Callable 存在于collections.abc中-可以将抽象基类最好地视为接口(interface)(例如,在Go中,动态基类比在Java中更动态),它们定义了一个接口(interface),并且具有给定功能的任何类都定义为继承从该抽象基类(无论它们是否显式这样做)中获取数据-这意味着您将有用地传递给此类函数的任何内容都是Callable的子类,从而使该术语的使用在此处完全正确。就像您可能说的Iterable一样。

绝对是大多数人在非正式地谈论Python代码时使用的术语,任何阅读您的代码的人都应该了解您的意思。

内置的callable()(在3.x中删除了一段时间,然后又添加回去)对类函数对象进行检查,这进一步加强了该名称,使其成为查找类函数对象的最佳选择。

关于python - 如何在Python文档字符串中定义 "callable"参数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23571253/

10-12 18:20