Переменные-флаги

В старые времена с помощью флагов командовали войсками. Например, если флаг поднят — нужно атаковать, опущен — отступать.

В программировании "флагом" называют переменную булевого типа, т.е. в которой хранится либо True, либо False. Их так называют потому, что управление с их помощью похоже на флаги: есть всего 2 варианта, флаг или поднят, или опущен.

Например, вам интересно, есть ли человек на видео:

def is_human_in_video(video):
  has_human = False
  for frame in video:
    if frame.has_human():
      has_human = True
  print(has_human)

Обратите внимание, что True и False написаны без кавычек! Так и задумано - это не строки, а отдельный тип данных.

По умолчанию считаем, что человека нет. Создаём флаг has_human = False. Далее для каждого кадра в видео проверяем, есть ли на нём человек. Если есть, меняем флаг на True. В конце выводим флаг с помощью print.

Если ни на одном кадре человек не найдётся, то флаг так и останется False, потому что условие if frame.has_human() не сработает.

Если хоть на одном кадре есть человек, то при обработке этого кадра сработает условие if frame.has_human() и флаг станет True.

Флаги являются таким частым приёмом, что они попали в стандартную библиотеку. Теперь можно писать так:

def is_human_in_video(video):
  return any(frame.has_human() for frame in video))

Читать подробнее про функцию any