使用cython .pxd文件来增强纯python文件

mon*_*kut 6 python cython

按照这里的示例" Augementing .pxd ",我正在尝试使用".pxd"文件来扩充纯python文件.(在纯python文件外部添加类型定义).

python文件:

class A(object):
    def foo(self, i=3, x=None):
        print "Big" if i > 1000 else "Small"
Run Code Online (Sandbox Code Playgroud)

pxd文件:

cdef class A:
    cpdef foo(self, int i, x)
Run Code Online (Sandbox Code Playgroud)

我有一本字典,我在python中默认为"无".不幸的是,cython不喜欢这个.

如果我使用我的"纯"python文件,而不在pxd文件中声明类型或将类型声明为"dict",我会收到错误:

"签名与之前的声明不兼容"

我注意到如果我没有指定默认值,它将编译,但是有理由声明默认值.

有办法可以处理吗?

pyf*_*unc 13

cpdef函数中的可选参数与cdef函数的声明方式不同,cdef函数与python函数基本相同.

您的.pxd文件应该被修改为写为

cdef class A:
    cpdef foo(self, int i=*, x=*)
Run Code Online (Sandbox Code Playgroud)