Флаги, которые изменяют поведение, будь то глобальные переменные или параметры функции, в порядке, но если они приводят к слишком большому разветвлению (if
s) в коде функции, я предпочитаю иметь группу функций, каждаяодин, обеспечивающий одно из желаемых поведений, и фабричную функцию, которая возвращает правильную функцию на основе значения флага.
Это отделяет выбор правильного поведения от реализации поведения.
Например,, что-то вроде этого:
def factory(arg0, arg1 ..., flag):
func_map = {
0: func0,
1: func1,
2: func2
}
return func_map[flag](arg0, arg1)
result = factory(foo, bar, 1)
Я бы не стал этого делать, если есть только два возможных поведения, но определенно рассмотрел бы для трех или более.