Python 如何避免在pyx文件(Cython)中使用函数?

Python 如何避免在pyx文件(Cython)中使用函数?,python,cython,cythonize,Python,Cython,Cythonize,在我使用Cython。我想知道是否有必要在我的.pyx文件中使用函数(def somefunction()) 这就是我现在定义.pyx文件的方式(比如pyxfname.pyx): 这就是调用pyx文件的python文件(比如pyfile.py)的结构: #Implement the cython job import cosmos_cy pyxfname.somefunction() 当我完成cythonizing过程时,我只需要执行python pyfile.py来运行该文件。事情确实正常

在我使用Cython。我想知道是否有必要在我的
.pyx
文件中使用函数(
def somefunction()

这就是我现在定义
.pyx
文件的方式(比如
pyxfname.pyx
):

这就是调用
pyx
文件的python文件(比如
pyfile.py
)的结构:

#Implement the cython job
import cosmos_cy

pyxfname.somefunction()
当我完成cythonizing过程时,我只需要执行
python pyfile.py
来运行该文件。事情确实正常运行

在上面的例子中,当我不使用
somefunction()
时,我得到了一个错误,它说
缓冲区类型只允许作为函数局部变量使用
,这与post中描述的类似

此外,我在多个地方(和)看到Cython不喜欢在函数中包含函数。因此,当我想在
pyx
文件中定义更多函数时,我的手就被束缚住了


因此,我希望避免定义python函数
somefunction()
。我需要在我的
pyx
py
文件(或两者)中做哪些更改才能实现所需的功能,而不必使用python functon?任何帮助都将不胜感激。

您引用的两种情况都是在其他函数中定义的函数。我希望Cython在普通模块级函数方面没有问题,比如你的
somefunction
。我不理解这个问题。如果
somefunction()
实际上只是在打印
“Hello world”
,那么您首先不需要Cython来完成这项工作。我想你实际上有一些其他的代码要放进
somefunction()
,但是当我们看不到这些代码时,我们很难给你提供建议。凯文:我的实际情况并没有什么不同(不仅仅是
你好世界
)。它有一系列嵌套的for循环、数学计算。我不想问题太长。我正在编辑我的帖子,以便更好地了解我正在做的一些事情。我不确定你想要实现什么,在我看来,你似乎试图在不同的功能之间共享数据。通常,我们会将处理这些数据的数据+函数封装在一个类中。如果这是您想要的,那么cython中有cdef类。正如所写的,这段代码编译正确。Cython不允许在嵌套函数或类中使用
np.ndarray[…]
类型。但是,这两种情况都不会显示在代码中。但是,在这些情况下,键入的MemoryView可以很好地工作。
#Implement the cython job
import cosmos_cy

pyxfname.somefunction()