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

时间:2015-11-21 14:23:59

标签: cython

当我声明一个返回double的cdef函数时,我写cdef double method_name(...)。如果它没有返回一些东西,我只是省略它到cdef method_name(...)然后cython --annotate标记为黄色。如何声明方法/函数不返回任何内容?

cdef void method_name(...)因分段错误而崩溃

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

3 个答案:

答案 0 :(得分:1)

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

指定void作为返回类型适用于我。它也用在一些官方的例子中,请确保不要退货。

答案 1 :(得分:0)

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

# mymod.pyx file

cdef void mycfunc(int* a):
    a[0] = 2

def myfunc():
    cdef int a = 1
    mycfunc(&a)
    print(a)

带注释的html文件和

中的c函数不是黄色
python -c 'from mymod import myfunc; myfunc()'

按预期打印2

答案 2 :(得分:0)

Cython版本0.22中的错误。更新到0.23.4解决了它。