Что означает угловые скобки в 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.

Вот пример, взятый со страницы документа:

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

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

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

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

Другие вопросы по тегам