Python中尖括号的含义是什么?

时间:2017-03-30 13:02:44

标签: python syntax brackets

我在scikit-learn包中找到了the following lines

if is_sparse:
    problem = csr_set_problem(
            (<np.ndarray[np.float64_t, ndim=1, mode='c']>X.data).data,
            (<np.ndarray[np.int32_t,   ndim=1, mode='c']>X.indices).shape,
            (<np.ndarray[np.int32_t,   ndim=1, mode='c']>X.indices).data,
            (<np.ndarray[np.int32_t,   ndim=1, mode='c']>X.indptr).shape,
            (<np.ndarray[np.int32_t,   ndim=1, mode='c']>X.indptr).data,
            Y.data, (<np.int32_t>X.shape[1]), bias,
            sample_weight.data)
else:
    ...

我对“Python中的尖括号”的所有搜索都给出了关于documentationdecorator syntax的答案,我很确定这不是因为它看起来像是真实的逻辑。

上述Python代码中的尖括号有什么作用?我在哪里可以了解更多有关它们的信息?

2 个答案:

答案 0 :(得分:6)

这是Cython的类型转换/强制语法。它不是普通的Python。请注意,文件扩展名为.pyx

您可以在documentation for Cython中了解有关它们的更多信息。

以下是从doc页面中获取的示例:

cdef char *p, float *q
p = <char*>q

使用Cython对于像scikit-learn这样的项目来说并不罕见,通过将可读的Python与超快速度C混合,可以获得显着的优化。

答案 1 :(得分:1)

看看Cython documentation, about types

此外,您可以注意到文件扩展名为.pyx,并且文件顶部有cimport个语句。