Pythonic检查位值的方法

Sim*_*eSi 0 python flags python-2.7

我有这组常量声明

    self.POUTPUT = 1
    self.PPWM = 2
    self.PINPUT = 4
    self.PUNUSED = 8
    self.PSONAR = 16
    self.PULTRA = 32
    self.PSERVOD = 64
    self.PSTEPPER = 128
    self.PCOUNT = 256
    self.PINPUTDOWN = 512
    self.PINPUTNONE = 1024
Run Code Online (Sandbox Code Playgroud)

检查值是否与任何输入状态(4,512和1024)匹配的pythonic方法是什么?额外的信息:我通常只是在简单的语言中使用位模式检查,但我想知道在Python中是否有更好的方法:)基本上它是每个引脚可以有一个上面的I/O状态但是如果一个引脚是任何然后一个动作发生,例如,如果pin == 4或512或1024 - >做某事

Jor*_*ley 5

if SOME_DATA & self.PINPUTNONE:  # do somethign
Run Code Online (Sandbox Code Playgroud)

是人们通常如何做到这一点

检查很多

ANY = self.POUTPUT | self.PPWM | self.PINPUT | self.PUNUSED |  self.PSONAR  ...
if some_data & ANY: #do something
Run Code Online (Sandbox Code Playgroud)