在 Cython 的(C 可调用)cdef 方法中使用可选(关键字)参数

Using optional (keyword) arguments in (C callable) cdef method in Cython

是否可以使用关键字参数定义(C 可调用)方法(因此通过 cdef 而不是 def),例如

cdef double function(x, **kwargs):
    if "factor" in kwargs:
        x = x * kwargs["factor"]
    return x*2

我知道我可以将函数分成两部分:一个带有调用 cdef 函数的 **kwargs 的 def。 目前,我正在尝试为 Python 和 Cython 使用相同的源代码,并增加一些 pyorcy 行。

没有。 cdef 函数生成 C 风格的函数签名,并且没有真正的方法来表示其中的关键字参数。

您可以让函数接受您有效地视为关键字参数的字典:

cdef double function(x, kwargs):
    # the rest as before

为什么要 cdef 函数? def 在 Cython 中定义的函数仍然被编译并且可以做大多数与 cdef 函数相同的事情,所以没有理由让你的函数 cdef 除非你发现你必须这样做。