为什么我不能在 Jupyterlab 的 Cython 中使用 int 参数?
Why can I not use int parameter in Cython in Jupyterlab?
我正在尝试在 Jupyterlab 中使用 Cython:
%load_ext Cython
%%cython -a
def add (int x, int y):
cdef int result
result = x + y
return result
add(3,67)
错误:
File "<ipython-input-1-e496e2665826>", line 9
def add (int x, int y):
^
SyntaxError: invalid syntax
我错过了什么?
add
必须用 cdef
定义,而不是 def
.
cdef add (int x, int y):
cdef int result
result = x + y
return result
add(3,67)
更新:
我刚刚测量了 cpdef
vs def
,分数之间的差异非常低(45(cpdef
)对 52(def
),较小 = better/faster),因此对于您的函数来说,只调用几次可能无关紧要,但通过大量数据进行咀嚼可能会产生一些真正的不同。
如果这对您不适用,只需在单独的单元格中调用 %load_ext
,保留 def
就足够了。
(Cython 0.29.24,GCC 9.3.0,x86_64)
使用 cpdef
to make it C-like function, but also to expose it to Python, so you can call it from Jupyter (because Jupyter is using Python, unless specified by the %%cython
magic func). Also, check the Early Binding for Speed 部分。
cpdef add (int x, int y):
cdef int result
result = x + y
return result
还要确保检查评论中提到的 Using the Jupyter notebook which explains that the %
needs to be in a separate cell as ead。
我正在尝试在 Jupyterlab 中使用 Cython:
%load_ext Cython
%%cython -a
def add (int x, int y):
cdef int result
result = x + y
return result
add(3,67)
错误:
File "<ipython-input-1-e496e2665826>", line 9
def add (int x, int y):
^
SyntaxError: invalid syntax
我错过了什么?
add
必须用 cdef
定义,而不是 def
.
cdef add (int x, int y):
cdef int result
result = x + y
return result
add(3,67)
更新:
我刚刚测量了 cpdef
vs def
,分数之间的差异非常低(45(cpdef
)对 52(def
),较小 = better/faster),因此对于您的函数来说,只调用几次可能无关紧要,但通过大量数据进行咀嚼可能会产生一些真正的不同。
如果这对您不适用,只需在单独的单元格中调用 %load_ext
,保留 def
就足够了。
(Cython 0.29.24,GCC 9.3.0,x86_64)
使用 cpdef
to make it C-like function, but also to expose it to Python, so you can call it from Jupyter (because Jupyter is using Python, unless specified by the %%cython
magic func). Also, check the Early Binding for Speed 部分。
cpdef add (int x, int y):
cdef int result
result = x + y
return result
还要确保检查评论中提到的 Using the Jupyter notebook which explains that the %
needs to be in a separate cell as ead。