我正在使用Cython。我想知道是否有必要在我的def somefunction()
文件中使用函数(.pyx
)。
这是我定义.pyx
文件(例如pyxfname.pyx
)的当前方式:
from __future__ import division
import numpy as np
cimport numpy as np
def somefunction():
cdef int i, j
cdef np.ndarray[double, mode="c", ndim=2] Kappa = np.zeros( [10 , 10], dtype=np.float64)
for i in range(0,10):
for j in range(0,10):
Kappa[i,j] += 1
print "Hello world"
这是调用pyfile.py
文件的python文件(例如pyx
)的结构:
#Implement the cython job
import cosmos_cy
pyxfname.somefunction()
完成Cythonize的过程后,我只需要执行python pyfile.py
即可运行文件。一切运行正常。
在上面的示例中,当我不使用somefunction()
时,出现一个错误,提示Buffer types only allowed as function local variables
,类似于this帖子中的描述。
此外,我在多个地方(here和here)看到Cython不喜欢在函数内部包含函数。因此,当我想在pyx
文件中定义更多函数时,我的双手会束缚。
因此,我想避免定义python函数 somefunction()
。我需要在pyx
或py
文件(或两者)中进行哪些更改才能实现所需的功能,而不必使用python functon?任何帮助将不胜感激。