当我声明一个返回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
答案 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解决了它。