【发布时间】:2017-09-23 10:40:21
【问题描述】:
我在 Cython 中有一堆 cdef 函数,它们由 pyx 文件中的 def 函数调用,例如:
cdef inline void myfunc_c(...):
(...)
return
def wrapper(...):
myfunc_c(...)
return
这很好用。但为了简化不必为每个 cdef 函数使用 python 包装器,我试图按名称索引 cdef 函数,方法是将它们分配给字典或类似的东西:
def wrapper(operation):
if operation == 'my_func':
func = myfunc_c
func(...)
return
但这不起作用。 Cython 抱怨它不知道myfunc_c 的类型。
有没有办法按名称索引或调用cpdef 函数(例如,使用字符串)?我也尝试过locals()['myfunc_c'] 之类的方法,但也没有用。
【问题讨论】:
-
我以前没有使用过 Cython,但这似乎没有意义 - 为什么你可以调用 myfunc_c inside 一个 Python 函数,而不是 外面一个?