我希望在一个名为的文件中有cdef
一个常量,以便我可以在其他地方使用它。假设我们有:INFINITY
constant.pxd
cimport
constant.pxd
import numpy as np
cimport numpy as np
from libc cimport math
ctypedef np.float32_t dtype_t
cdef dtype_t INF = math.INFINITY if math.INFINITY != 0. else np.float32('inf')
但是,这不起作用,例如,在另一个.pyx
文件中:
from constant cimport INF
cpdef test():
return INF
产生:
>> 0.0
我也尝试INF
直接定义为np.float32('inf')
or np.inf
。但是,它们最终都为零。
但是,我可以INF = np.float32('inf')
在不输入.pyx
文件的情况下定义它,constant.pyx
并按预期使用它。我不清楚这是否会导致执行问题,如果我们有,说:
from constant import INF
from constant cimport dtype_t
cdef class A:
cdef dtype_t data
def __cinit__(self, dtype_t data):
self.data = data
# ...
与:
from constant import INF
a = A(INF)