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

12

我在scikit-learn软件包中发现以下行:

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中的尖括号”时,所有结果都是关于文档或者装饰器语法的答案。但我相信这不是它们真正的用途,因为它看起来像实际的逻辑。

以上Python代码中的尖括号是什么作用?我应该去哪里了解更多信息呢?

2个回答

11
这是Cython中用于类型转换/强制转换的语法,它不是纯Python。请注意文件扩展名为.pyx。 您可以在Cython的文档中了解更多相关信息。 以下是文档页面中的例子:
cdef char *p, float *q
p = <char*>q

在像 scikit-learn 这样的项目中,使用Cython并将易于阅读的Python代码与快速高效的C代码混合使用可以获得显着的优化。


3

请查看Cython类型文档

此外,您需要注意文件扩展名为.pyx,文件顶部有cimport语句。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接