Cython的语句和表达式
1 Cython的语句和表达式遵循的是Python的语法
2 但是由于Cython融合了C语言的语法,有些区别也要注意一下:
2.1 Cython里没有“->”操作符,用"."代替,这在上一节结构体的使用中己讲过
2.2 Cython里没有指针的取值操作符“*”,用p[0]代替*p
2.3 Cython里也有取一个变量的地址操作符&
2.4 在Cython里空指针用NULL表示,而且NULL是保留关键字,不能用0表示,除非用强制转换虽然大家知道NULL的值其实就是0
2.5 Cython里用<>来进行强制转换,而不像是C/C++里的(),如:
cdef int a
cdef int *b = &a
a = <int>b
3 关于Cython的for循环
3.1 Cython里同样支持Python里的for-in-range形式的for循环
3.2 出于性能的考虑,Cython对for循环作了优化,如for i in range(n),如果i是一个预先通过cdef 定义的变量,那么Cython会将这样的for循环转成C代码,举个例子:
cdef int i
for i in range(0,10,2):
printf("%d\n",i)
3.3 翻译后的C代码变成:
for (__pyx_t_1 = 0; __pyx_t