Python 扩展函数和';帮助';
当我打电话时Python 扩展函数和';帮助';,python,cpython,Python,Cpython,当我打电话时 help(Mod.Cls.f) (Mod是一个C扩展模块),我得到了输出 Help on method_descriptor: f(...) doc_string 你不能。“pydoc”和“help()”使用的inspect模块无法确定C函数的确切签名是什么。您所能做的最好的事情是内置函数所做的:在docstring的第一行包括签名: >>> help(range) Help on built-in function range in module _
help(Mod.Cls.f)
(Mod是一个C扩展模块),我得到了输出
Help on method_descriptor:
f(...)
doc_string
你不能。“pydoc”和“help()”使用的inspect模块无法确定C函数的确切签名是什么。您所能做的最好的事情是内置函数所做的:在docstring的第一行包括签名:
>>> help(range)
Help on built-in function range in module __builtin__:
range(...)
range([start,] stop[, step]) -> list of integers
...
random.shuffle的docstring看起来“正确”的原因是它不是一个C函数。这是一个用Python编写的函数。托马斯的答案当然是正确的
我只想补充一点,许多C扩展模块周围都有一个Python“包装器”,这样它们就可以支持标准函数签名和其他动态语言功能(如描述符协议)。谢谢,但是为什么它会说method_descriptor而不是方法和模块的名称呢?因为Python认为对象就是这样的——因为它就是这样的。请参阅“帮助(list.append)”,您将看到相同的内容。啊,我明白了。。。帮助(list.sort)的作用完全相同。如果它对list.sort足够好,那么对我也足够好:-)
{ "f", f, METH_VARARGS, "doc_string" }
>>> help(range)
Help on built-in function range in module __builtin__:
range(...)
range([start,] stop[, step]) -> list of integers
...