栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Cython“不允许在常量表达式中使用”,boundscheck False无效

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Cython“不允许在常量表达式中使用”,boundscheck False无效

失败与无关

cython.boundscheck

边界检查只是检查您是否尝试访问不存在的数组元素。例如,如果您有一个大小为4的数组并尝试访问元素5-

boundscheck(True)
它将给您一个Exception,
boundscheck(False)
它会导致未定义的行为(可能导致分段错误)。

编译失败的原因是另一个:您不能创建具有动态长度的静态数组!需要在编译时知道元素的数量,这只是c强制执行的(我想)。

但是,您可以定义

r
在编译时已知:

DEF r=4cimport cython@cython.boundscheck(False)def boundtest():    cdef double l[r]

但是,您可以简单地创建一个NumPy数组并将其存储在memoryview变量中:

cimport cythonimport numpy as np@cython.boundscheck(False)def boundtest():    cdef int r=4    cdef double[:] l = np.empty(r, dtype=np.double)


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/660978.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号