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

Rôm*_*con 5 c python api bitmask

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

#define EVENT_KEY_DOWN    1
#define EVENT_KEY_UP      2
#define EVENT_KEY_PRESS   4
Run Code Online (Sandbox Code Playgroud)

5例如,它可以返回意味着两者EVENT_KEY_DOWN并且EVENT_KEY_PRESS被触发.

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

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

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

有没有"推荐"的方式?

Mat*_*per 0

稀疏优于密集;可读性很重要。我会按照该逻辑选择字符串元组,但也会查看如何使用 API 的模式。例如,如果您处于性能关键的代码路径中,则应该考虑将其保留为位掩码。