如何声明常量(各种类型 - 不仅仅是枚举值)并在多个.pyx
文件之间共享它们?
在.pyx
文件中,我可以声明并使用常量:
DEF FavouriteFood = "spam"
DEF ArraySize = 42
print(FavouriteFood)
print(ArraySize)
使用.pxd
文件,我可以share C functions或share types。
但我如何分享常数?文档表示very limited way of doing this with anonymous enums,但其中的值只能是整数。如何将常量字符串或浮点数导入.pyx
文件?
答案 0 :(得分:3)
您可以使用一个非常短的内联函数(lodash)来返回常量
cdef inline const char* GetFavouriteFood():
return "spam"
cdef inline float GetHowMuch():
return 4.5
另一种选择是在头文件中定义C中的常量然后(在你的pxd中)做
cdef extern from "myconstants.h":
const char* FavouriteFood
float HowMuch
C编译器(而不是Cython)强制执行constness,因此如果您尝试更改错误,则会在该阶段出现错误。这确实涉及创建一个额外的文件,所以我个人更喜欢内联函数方法。
编辑(2018):
现在,您可以直接在Cython中包含C代码,这使第二种方法更容易:
cdef extern from *:
"""const char* FavouriteFood = "spam";
const float HowMuch = 4.5;"""
const char* FavouriteFood
float HowMuch