当我声明一个返回双精度的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解决了这个问题。