Что такое угловые скобки в Python?

нашел следующие строки в пакете 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 ответов


это синтаксис Cython для приведения/принуждения типа. Это не простой Python. Обратите внимание, что расширение файла .pyx

вы можете узнать больше о них в документация для Cython.

вот пример, взятый со страницы doc:

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

использование Cython не редкость с такими проектами, как scikit-learn, где можно получить значительную оптимизацию, смешивая читаемый Python с пылающей скоростью C.


посмотри Cython документация, о типах.

кроме того, вы можете отметить, что расширение файла .pyx и в верхней части файла есть cimport заявления.