gpt4 book ai didi

cython - 如何在文档中显示 Cython 函数的参数?

转载 作者:行者123 更新时间:2023-12-04 01:56:10 26 4
gpt4 key购买 nike

以下代码定义了一个简单的 Cython 函数(为方便起见,使用 Ipython 魔法)。

%load_ext cython
%%cython
def f(float x, float y=2):
return x+y

然后,调用 help(f)给出这个信息:
Help on built-in function f in module _cython_magic_e37eeabbc63d5167217465ba978239fc:

f(...)

注意 f 的参数没有显示。此外,制表符补全也不适用于 ipython 中的参数名称(例如,键入 f(x 然后 tab )。

如果我在不使用 Cython 的情况下定义此函数:
def g(x, y=2):
return x+y

调用 help(g)给出了这个并且制表符完成按预期工作:
Help on function g in module __main__:

g(x, y=2)

有没有办法通过 Cython 函数获得这种行为?我试过 def , cdef , cpdef ,无论有没有 ipython 魔法,都没有成功。

最佳答案

不同意同意的答案。
在启用 binding 时确实有在代码中显示文档字符串的副作用,它还将所有其他 Python 类属性绑定(bind)到 Cython 扩展类,这会降低性能,每个扩展对象使用更多内存等等。
仅启用没有副作用的文档字符串的正确标志是 embedsignature=True .
它可以用作装饰器 - @cython.embedsignature(True)在所有函数之上,或 setup.py 中的部分 cython 指令扩展以应用于所有 Cython 函数 - {'embedsignature': True}来自 docs :

embedsignature (True / False)

If set to True, Cython will embed a textual copy of the call signature in the docstring of all Python visible functions andclasses. Tools like IPython and epydoc can thus display the signature,which cannot otherwise be retrieved after compilation. Default isFalse.

关于cython - 如何在文档中显示 Cython 函数的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50492949/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com