What is the meaning of angle brackets in Python?

99封情书 提交于 2020-06-10 12:46:49

问题


I found the following lines in the scikit-learn package:

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:
    ...

All my searches for "angle brackets in Python" give answers about documentation or decorator syntax, which I am pretty sure this is neither because it looks like actual logic.

What do the angle brackets in the above Python code do and where can I learn more about them?


回答1:


That is Cython's syntax for type casting/coercion. It is not plain Python. Notice the file extension is .pyx

You can learn more about them in the documentation for Cython.

Here's an example taken from the doc page:

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

Using Cython is not uncommon with projects like scikit-learn, where one gains significant optimisations by mixing readable Python with blazing-speed C.




回答2:


Take a look at Cython documentation, about types.

Additionally you could note that the file extension is .pyx and on the top of the file there are cimport statements.



来源:https://stackoverflow.com/questions/43118694/what-is-the-meaning-of-angle-brackets-in-python

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!