2016-04-14 30 views
0

如何聲明常量(各種類型 - 不僅僅是枚舉值)並在多個.pyx文件之間共享它們?在.pyx文件中導入非整數常量

在一個.pyx文件,我可以聲明和使用常量:

DEF FavouriteFood = "spam" 
DEF ArraySize = 42 
print(FavouriteFood) 
print(ArraySize) 

,並使用.pxd文件,我可以share C functionsshare types

但我怎樣才能分享常量?文檔指出very limited way of doing this with anonymous enums,但這些值只能是整數。例如,如何將一個常量字符串或浮點數導入.pyx文件?

回答

1

你可以用很短的內聯函數(in the pxd file)剛剛返回常量

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)強制執行常量,因此如果您嘗試更改它們,則會在該階段出現錯誤。這確實涉及創建一個額外的文件,所以我個人更喜歡內聯函數方法。