Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:二进制条件_Python_Conditional_Flags - Fatal编程技术网

Python:二进制条件

Python:二进制条件,python,conditional,flags,Python,Conditional,Flags,我有多种情况,比如: if condition: flag1 = True flag2 = testfunc() flag3 = bool(variable) if not flag1 and not flag2 and not flag3: do0 elif flag1 and flag2: do1 elif flag2 and flag3: do2 flags = 0 if condition: flags += 1 if testfunc(): flags +=

我有多种情况,比如:

if condition:
  flag1 = True
flag2 = testfunc()
flag3 = bool(variable)
if not flag1 and not flag2 and not flag3:
  do0
elif flag1 and flag2:
  do1
elif flag2 and flag3:
  do2
flags = 0
if condition:
  flags += 1
if testfunc():
  flags += 2
if bool(variable):
  flags += 4
if flags == 0:
  do0
elif flags == 3:
  do1
elif flags == 6:
  do2
我能把它改成这样吗:

if condition:
  flag1 = True
flag2 = testfunc()
flag3 = bool(variable)
if not flag1 and not flag2 and not flag3:
  do0
elif flag1 and flag2:
  do1
elif flag2 and flag3:
  do2
flags = 0
if condition:
  flags += 1
if testfunc():
  flags += 2
if bool(variable):
  flags += 4
if flags == 0:
  do0
elif flags == 3:
  do1
elif flags == 6:
  do2
正如您所理解的,可以有值0、1、2、4、8、16、32。。。条件。可以在Python中执行类似的操作吗?谢谢

更新。这类似于
re
PyQt4
模块中的条件(您可以在其中设置
re.UNICODE
|
re.DOTALL

re
模块中的示例:

DOTALL = 16
I = 2
IGNORECASE = 2
L = 4
LOCALE = 4
M = 8
MULTILINE = 8
S = 16
U = 32
UNICODE = 32
VERBOSE = 64
X = 64

是的,这是完全有可能做到的-您的代码应该按原样运行良好(声明了给定的变量和函数)

这是个好主意吗?不是真的——当你读到你的意思时,它就不那么明显了。可读性是第一位的

如果您的问题是大量的
s,那么您可以通过其他方式进行清理:

if not any(condition, flag2, variable):

使用
any()
all()
通常可以帮助您简化事情。

哇,这似乎非常有用。我将把它投入使用!然而,PyQt4和re的创建者似乎使用了我所要求的方式。就教育而言,了解如何获得这样的东西是很有用的。他们使用位来实现这一点吗?@ghostmansd这些是-我认为它们更多地用于与底层C库的一致性,并反对编写以同样方式工作的纯python代码。