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