Разница между Union и Optional типами в Python заключается в том, что каждый из них указывает разные аннотации типов. 14
Union позволяет указать два допустимых типа вместо одного. 1 Например, с его помощью можно указать, что переменная может принимать значения как целого числа, так и строки. 1
Optional показывает, что объект может принимать значение None. 1 Такая аннотация нужна для переменных, которые либо имеют значение определённого типа, либо равны None. 4
Таким образом, Union используется, когда значение может принимать более конкретные типы, а Optional — когда значение будет либо определённого типа, либо исключительно None. 2
При этом аннотация Optional[T] эквивалентна Union[T, None]. 4