cython多次回归

Ale*_* Vl 3 python cython

我想包装这个简单的函数:

       double foo(int a, int* b)
       {
          double div = ((double) a) / ((double) *b);
          *b = a + (*b);
          return div;
        } 
Run Code Online (Sandbox Code Playgroud)

我想要做的是这样的:

      cdef pyfoo(int c, int d):
         res = foo(c, &d);
         return (res, d)  
Run Code Online (Sandbox Code Playgroud)

我想返回一个值列表,但是使用cdef它不起作用它给了我erroe:AttributeError没有属性pyfoo如果不使用cdef我使用def或cpdef它可以工作.

使用cdef在cython中有一些方法吗?

Pet*_*rin 7

cdefPython代码无法访问函数.这就是为什么它们很快:从Python调用函数总是很慢.

该解决方案正在使用cpdef,因此它既可以从Python访问,也可以从C调用时快速.或者,不要从Python代码调用它.