按照此处的示例“Augementing .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)

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

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



我注意到如果不指定默认值,它将进行编译,但是有理由声明默认值。

有办法解决吗?

最佳答案

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

您的.pxd文件应修改为

cdef class A:
    cpdef foo(self, int i=*, x=*)

关于python - 使用cython .pxd文件来增强纯python文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3852742/

10-11 22:24
查看更多