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でこのようなことをすることは可能ですか? ありがとう!

更新します。これは、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
4

1 に答える 1

2

はい、これを行うことは完全に可能です-コードはそのままで正常に実行されるはずです(変数と関数が宣言されている場合)。

それは良い考えですか?そうではありません-あなたが何を意味するかを読むとき、それははるかに明白ではありません. 読みやすさが第一です。

問題が多数のands にある場合は、他の方法でクリーンアップできます。

if not any(condition, flag2, variable):

any()andを使用すると、all()物事を単純化するのに役立つことがよくあります。

于 2012-05-03T22:55:21.880 に答える