0

我有多个条件,如下所示:

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 中做这样的事情吗?谢谢!

更新。这类似于rePyQt4模块中的条件(您可以在其中设置类似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
4

1 回答 1

2

是的,完全有可能做到这一点——您的代码应该可以正常运行(给定变量和函数已声明)。

这是个好主意吗?不是真的 - 在阅读你的意思时它不那么明显。可读性是第一位的。

如果您的问题出在很多ands 上,那么您可以通过其他方式对其进行清理:

if not any(condition, flag2, variable):

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

于 2012-05-03T22:55:21.880 回答