В Python в условии `if` используется тип данных, приводимый к булеву типу (`bool`). Это означает, что выражение, указанное в условии `if`, должно быть интерпретировано как `True` или `False`.
  
  Вот что может быть в условии `if` и как оно преобразуется к булеву типу:
  
  
    - Булевы значения: `True` или `False` используются напрямую.
- Числа:
      
        - `0` (целое или с плавающей точкой) интерпретируется как `False`.
- Любое другое число, отличное от `0`, интерпретируется как `True`.
 
- Строки:
      
        - Пустая строка `""` интерпретируется как `False`.
- Любая непустая строка интерпретируется как `True`.
 
- Списки, кортежи, множества, словари:
      
        - Пустые коллекции (например, `[]`, `()`, `set()`, `{}`) интерпретируются как `False`.
- Непустые коллекции интерпретируются как `True`.
 
- None: `None` всегда интерпретируется как `False`.
- Другие объекты:
     
 Большинство объектов, созданных пользователем (т.е. экземпляры классов), интерпретируются как `True` по умолчанию. Однако, класс может определить методы `__bool__()` или `__len__()`, которые будут использоваться для определения истинности экземпляра. Если определен `__bool__()`, он должен возвращать `True` или `False`. Если `__bool__()` не определен, Python попытается использовать `__len__()`. Если `__len__()` возвращает `0`, то объект считается `False`; в противном случае он считается `True`. Если ни `__bool__()`, ни `__len__()` не определены, объект всегда считается `True`.
  Примеры:
  
  
    
    if True:  # bool
        print("True")
    if 1:     # int (True)
        print("1 is True")
    if 0:     # int (False)
        print("0 is True") # Не выполнится
    if "Hello": # str (True)
        print("Hello is True")
    if "":     # str (False)
        print("Empty string is True") # Не выполнится
    if [1, 2, 3]: # list (True)
        print("List is True")
    if []:      # list (False)
        print("Empty list is True") # Не выполнится
    if None:    # None (False)
      print("None is True") # Не выполнится
    
  
  Важно понимать, что Python не требует, чтобы условие `if` было булевым значением напрямую. Он выполняет неявное преобразование в булево значение, используя вышеописанные правила.