Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何定义一个;“可赎回”;Python文档字符串中的参数?_Python_Types_Documentation_Docstring_Function Declaration - Fatal编程技术网

如何定义一个;“可赎回”;Python文档字符串中的参数?

如何定义一个;“可赎回”;Python文档字符串中的参数?,python,types,documentation,docstring,function-declaration,Python,Types,Documentation,Docstring,Function Declaration,考虑一个filterNot的实现(基本上与filter相反): 参数f可以是“函数”或“方法”或lambda——甚至可以是其类定义了\uuuu调用的对象 现在考虑这个参数的字符串字符串: :param ??? f: Should return True for each element to be abandoned 现在,应该用什么来代替?——docstring中应该如何引用参数f的类型可调用是一个明显的选择(如果我发号施令,我会口述什么:P),但是有一个既定的惯例吗?是的,这里使用的术语是

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

参数
f
可以是“函数”或“方法”或
lambda
——甚至可以是其类定义了
\uuuu调用的对象

现在考虑这个参数的字符串字符串:

:param ??? f: Should return True for each element to be abandoned

现在,应该用什么来代替——docstring中应该如何引用参数
f
的类型<代码>可调用
是一个明显的选择(如果我发号施令,我会口述什么:P),但是有一个既定的惯例吗?

是的,这里使用的术语是可调用

存在于
集合中。abc
-抽象基类最好被认为是接口(尽管它们更像Go中的动态基类,而不是Java中的动态基类)-它们定义了一个接口,任何具有给定函数的类都被定义为从该抽象基类继承(无论它们是否显式继承)-这意味着您可以有效地传递到函数中的任何内容都将是
可调用的
的子类,使得术语的使用在这里完全正确。正如您可能会说的那样,
Iterable

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


内置的
callable()
(在3.x中删除了一段时间,然后又添加了回来)可以检查类似函数的对象,这进一步加强了名称作为查找类似函数对象的最佳选择的作用。

值得注意的是,函数、方法、,lambda都是通过不同的方法生成的函数-它们本身并没有什么特别之处。@200OK,这与问题的实质无关。
callable
对我来说似乎很好,可能是最好的——如果您的文档生成引擎不喜欢这样,
功能
可能是次佳选择。毕竟,在python中,假定对象的行为只需要像文档中记录的函数所采用的任何类型一样。@Lattyware非正式地说,它们都是函数,可以调用。但是,有不同类型的
函数
(由
lambda
表达式和
def
语句创建)、
实例方法
(实例或类方法)和
内置函数或方法
(直接用C实现,而不是用Python代码实现)。此外,其类型/类定义了
\uuuuu调用\uuuuu
方法的任何对象都是可调用的,而不是前面提到的任何类型。因此,有一个包含所有这些的术语是值得的。@chepner哦,事实上,我并不是说不需要一个通用术语,我只是指出函数和lambda是相同的项,只是通过不同的方式构造的。(和方法本质上只是修饰函数)。它并不是用来改变问题的,只是一个有趣的提示。在我看来,答案似乎是“不”,但你同意“可调用”是最好的使用术语…:-/@克里斯。问的问题是,在docstring中,如果你想要一个像object这样的函数,那么在docstring中,调用什么是正确的。我想问的是,是否有一种“官方”或标准化的方法来实现这一点(例如,在PIP中)。。。听起来好像没有。也就是说,我同意“可调用”比“函数”或任何我能想到的东西更有意义。@ChrisW。好吧,当你想要一个字符串时,你应该使用'str'不是“正式的”,给出类型的名称(在本例中是抽象基类),这几乎是这里假定的用法。
:param ??? f: Should return True for each element to be abandoned