6

按照此处的示例“ Augementing .pxd ”,我正在尝试使用“.pxd”文件来增强纯 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)

我有一本字典,我在 python 中默认为“无”。不幸的是,cython 不喜欢这样。

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

“签名与之前的声明不符”

我注意到如果我不指定默认值,它将编译,但声明默认值是有原因的。

有没有办法处理这个问题?

4

1 回答 1

14

cpdef 函数中的可选参数的声明方式与 cdef 函数不同,后者本质上与 python 函数相同。

您的 .pxd 文件应修改为

cdef class A:
    cpdef foo(self, int i=*, x=*)
于 2010-10-04T08:17:51.747 回答