cython:如何声明一个没有返回的cdef函数



当我声明一个返回双精度的cdef函数时,我会写入cdef double method_name(...)。如果它没有返回什么,而我只是将其省略到cdef method_name(...),那么cython-annotation将其标记为黄色。如何声明方法/函数不返回任何内容?

cdef void method_name(...)因分段故障而崩溃

cdef None method_name(...)->'None' is not a type identifier

--annotate将其标记为黄色,因为如果省略返回类型注释(cython Language Basics),则cython假定返回类型为python对象。

将void指定为返回类型适用于我。它也被用在相当多的官方例子中,只是确保不要返回任何东西。

对于用void定义c函数的我(cython 0.21.1)来说:

# mymod.pyx file
cdef void mycfunc(int* a):
    a[0] = 2
def myfunc():
    cdef int a = 1
    mycfunc(&a)
    print(a)

c函数在带注释的html文件和中不是黄色的

python -c 'from mymod import myfunc; myfunc()'

按预期打印CCD_ 8。

Cython 0.22版本中的一个错误。更新到0.23.4解决了这个问题。

最新更新