我正在寻找合并一些cython来加快我的代码的速度。
我在Jupyter中运行cython代码时遇到问题。

单元格1:

%%cython
cdef fuc():
    cdef int a = 0
    for i in range(10):
        a += i
        print(a)

单元格2:
fuc()

错误:
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-48-10789e9d47b8> in <module>()
----> 1 fuc()

NameError: name 'fuc' is not defined

但是,如果我这样做,它会很好。
%%cython
def fuc():
    cdef int a = 0
    for i in range(10):
        a += i
        print(a)

看起来cdef在Jupyter中使用的方式有所不同,如何在Jupyter Notebook中使用cdef?

最佳答案

cdef functions can only be called from Cython, not Python。该文件说



(已经声明“C函数”由cdef定义,“Python函数”由def定义。)

请在Cython中使用def函数。它仍然由Cython编译。您仍然可以在cdef函数中使用def类型。

10-08 02:39