Cython的类型
1 类型定义
1.1 定义一个C变量:
1.1.1 在Cython里定义一个C变量和C语言类似,不同的地方就是在声明的最前面要加上cdef,另外,末尾不用加分号”;“如:
cdef int an[10]
cdef int n = 123
cdef int *pn = &n
printf(“%d \n”,pn[0])
1.1.2 这里要注意的是,以Cython里不能用类似*ptr这样代码来对指针变量进行取值,而必须用ptr[0]这样的形式,如上面的例子中,printf(“%d\n”,*pn)是编译通不过的
1.2 定义一个Python对象
1.2.1 和Python没有区别,直接给一个变量名赋值即可,如:
b = [1,2,3]
a = ‘hello,world’
1.2.2 每个变量名实现上都是一个Python对象指针
2 类型转换
2.1 在Cython里用<>替代了()来进行类型转换,如:
cdef float a= 123.456
cdef int b
b = a
2.2 再如:
cdef int n
a = ‘hello,world’
n = a
2.2.1 这里要注意的是:n = a 把一个Python字符串对象指针强制转换成了一个整形变量,这在封装回调函数时经常会用到强制将一个Python对象指针强制转换成C类型的情况。