finally можно использовать без блока except.  Он будет выполнен в любом случае, независимо от того, было ли исключение в блоке try или нет.
  
try:
    f = open("my_file.txt", "r")
    # ... какие-то действия с файлом ...
finally:
    f.close() # Гарантированно закрывает файл, даже если в try возникнет исключение.
  Да, блок finally можно использовать без блока except в Python. Блок finally предназначен для выполнения кода, который должен быть выполнен в любом случае, независимо от того, произошло исключение или нет. Он гарантированно выполнится либо после завершения блока try, либо после обработки исключения (если оно возникло) в соответствующем блоке except (если он есть).
Когда finally используется без except, он выполнится после завершения блока try, даже если внутри try возникнет исключение, которое не будет обработано. В этом случае исключение будет переброшено дальше после выполнения кода в блоке finally.
Пример:
def example_finally_without_except(numerator, denominator):
    try:
        result = numerator / denominator
        print(f"Результат деления: {result}")
    finally:
        print("Блок finally всегда выполняется.")
# Пример 1: Деление без ошибок
print("Пример 1:")
example_finally_without_except(10, 2)
# Пример 2: Деление на ноль (вызывает исключение)
print("\nПример 2:")
try:
    example_finally_without_except(10, 0)
except ZeroDivisionError as e:
    print(f"Поймано исключение: {e}")
  Разъяснение примера:
try завершается нормально, затем выполняется блок finally.ZeroDivisionError.  Поскольку блока except внутри функции нет, но есть в вызывающем коде, исключение перебрасывается в вызывающий код после выполнения блока finally.  Обратите внимание, что блок finally все равно выполняется, даже если возникает необработанное исключение.Когда это полезно?
finally особенно полезен для освобождения ресурсов (закрытие файлов, соединений с базой данных, и т.д.), которые были выделены в блоке try.  Он гарантирует, что эти ресурсы будут освобождены, независимо от того, как завершится выполнение блока try.
Важно отметить: Если исключение возникает в блоке try и не обрабатывается ни блоком except внутри функции, ни блоком except снаружи, исключение будет передано дальше по стеку вызовов после выполнения finally. Если в итоге исключение так и не будет поймано, программа завершится с ошибкой.