在 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
除非你发现你必须这样做。
是否可以使用关键字参数定义(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
除非你发现你必须这样做。