Пост Капибарина vrom1990.
Удивительно, сколько людей по ходу обучения программированию упускают эту важную, но очень даже простую тему, и очень удивляются потом, когда натыкаются на флаги то тут, то там, пока не разберутся
Двухпозиционные переменные
Флагом называется переменная(или свойство/поле объекта), которая хранит данные логического (True/False) либо 1/0. Собственно, в математической логике как раз и обозначается истина числом 1, ложь числом 0.
Очень просто запомнить, почему такой вид переменных называется именно так — у флага на флагштоке ведь два состояние: поднят/опущен. Так и здесь. Хотя мне больше нравится думать о таких переменных, как о выключателях: две позиции — «вкл» или «выкл». Или о лампочках-индикаторах — горит или не горит. Иногда — о рычагах, у которых тоже два положения, или кнопках, которая при одном нажатии уходит вглубь корпуса, а при втором выходит обратно.
Зачем нужны такие переменные?
Как я выше написал, можно представлять переменные-флаги в виде индикаторов. Если код большой и в нём приходится управлять кучей разных объектов, важно уметь в любой момент посмотреть состояние того или иного объекта.
Флаг может показывать, можно или нельзя выполнять какое-то действие, например, открыть дверь(электронный запрограммированный замок, состояние заперт/не заперт).
Флаг может показать, включено или выключено какое-либо устройство, например, двигатель, робот-пылесос, опасный автоматический станок, автополив, охранная система.
Флаг может сигнализировать об опасности или проблеме — как лампочка(обычно красного цвета) может сигнализировать о какой-нибудь поломке в машине, нехватке топлива, о разгерметизации салона самолёта, о повышенном количестве газа рядом с газовой плитой и т.д.
Как заметить переменную-флаг?
Очень просто, такие переменные легко заметны, когда они стоят одиноко в условии справа от if — никакого оператора сравнения или чего-то ещё, просто переменная или поле объекта и всё. Часто это значит, что переменная или поле хранят именно True/False или 1/0.
Ну и, само собой, вы заметите, если в коде написано что-то вроде
is_in_black_list = True;
то есть присваивание переменной значения True/False или 1/0.
Вот такая вот простая по идее тема, которую многие при обучении пропускают и изучают уже самостоятельно — флаги в программировании.
Обсудить: https://www.kapi.bar/post/chto-za-flagi-v-programmirovanii