У меня есть несколько условий, например:Python: бинарное условия
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
Вау, кажется, очень полезно. Я возьму его на вооружение! – ghostmansd
Однако создатели PyQt4 и re, похоже, использовали способ, который я прошу. Просто для образования будет полезно понять, как получить что-то подобное. Они использовали биты для этого? – ghostmansd
@ghostmansd Это [побитовые операторы] (http://docs.python.org/reference/expressions.html#binary-bitwise-operations) - я бы предположил, что они используются больше для согласованности с базовыми библиотеками C и будут утверждают против написания кода на чистом питоне, который работал одинаково. –