0

我希望在一个名为的文件中有cdef一个常量,以便我可以在其他地方使用它。假设我们有:INFINITYconstant.pxdcimportconstant.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)
4

0 回答 0