如何在Python中包装返回位掩码的函数

时间:2015-03-03 14:37:55

标签: python c api bitmask

考虑C函数int get_events(),它返回以下事件的位掩码:

#define EVENT_KEY_DOWN    1
#define EVENT_KEY_UP      2
#define EVENT_KEY_PRESS   4

例如,它可能会返回5,意味着触发了EVENT_KEY_DOWNEVENT_KEY_PRESS

我考虑了以下方法将函数中的值返回到Python代码:

  • “按原样”,即5
  • 一个整数元组:(1, 4)
  • 一串字符串:('EVENT_KEY_DOWN', 'EVENT_KEY_PRESS')

(在所有情况下,我都可以声明常量,如mymodule.EVENT_KEY_DOWNmymodule.EVENT_KEY_PRESS。)

有“推荐”方式吗?

1 个答案:

答案 0 :(得分:0)

Sparse is better than dense; readability counts。我按照这个逻辑选择字符串元组,但也要看看你将如何使用API​​的模式。例如,如果您处于性能关键代码路径中,则应考虑将其保留为位掩码。