Cython:如何在 pxd 文件中声明默认值

Dav*_*d R 3 default-value cython python-2.7

我有一个想要抽象为可导入模块的函数:

cdef list generate_random_vectors(int num_vectors, int length, float scale=1):
    cdef list return_list
    np.random.seed()
    return_list = []
    for n in range(num_vectors):
    return_list.append((1 - 2 * np.random.rand(length)) / scale)
    return return_list
Run Code Online (Sandbox Code Playgroud)

要将其放入模块中,我必须在 pxd 文件中定义它。

当我尝试这个时:

cdef list generate_random_vectors(int num_vectors, int length, float scale)
Run Code Online (Sandbox Code Playgroud)

我收到错误:函数签名与先前的声明不匹配。

当我尝试这个时:

cdef list generate_random_vectors(int num_vectors, int length, float scale=1)
Run Code Online (Sandbox Code Playgroud)

我收到错误:预期为“)”,发现为“INT”

Dav*_*d R 6

找到了。pxd 文件中的语法有所不同。

我需要使用:

cdef list generate_random_vectors(int num_vectors, int length, float scale=*)
Run Code Online (Sandbox Code Playgroud)