使用cython .pxd 文件增强纯Python文件
根据这里的例子,"增强 .pxd 文件",我想用 ".pxd" 文件来增强一个纯 Python 文件。(也就是在纯 Python 文件外部添加类型定义)。
这是我的 Python 文件:
class A(object):
def foo(self, i=3, x=None):
print "Big" if i > 1000 else "Small"
这是我的 pxd 文件:
cdef class A:
cpdef foo(self, int i, x)
我有一个字典,默认值设为 "None" 在 Python 中。可惜的是,Cython 不喜欢这样。
如果我使用我的“纯” Python 文件,而不声明类型,或者在 pxd 文件中将类型声明为 "dict",我会遇到这个错误:
"签名与之前的声明不兼容"
我发现如果我不指定默认值,它是可以编译的,但我有理由要声明默认值。
有没有办法解决这个问题呢?
1 个回答
14
在cpdef函数中,选填参数的声明方式和cdef函数不一样,实际上这和Python函数的写法是相同的。
你的.pxd文件需要修改成以下的写法:
cdef class A:
cpdef foo(self, int i=*, x=*)