Python Glossary English

Python 3.5+Аннотации и typingпонятие

Optional[X] / X | None

опциональный

Optional[X] означает X | None. С Python 3.10+ можно писать X | None напрямую. Применяется для значений, которые могут отсутствовать.

Синтаксис

from typing import Optional
Optional[X]  # эквивалентно X | None
# Python 3.10+: X | None

Главная путаница новичков: Optional не значит «аргумент можно не передавать». Он говорит лишь о том, что значением бывает None, а необязательным параметр делает значение по умолчанию — def f(x: Optional[int]) по-прежнему требует аргумент. И mypy давно не дописывает Optional сам: x: int = None теперь ошибка, пишите x: int | None = None.

Примеры

from typing import Optional
def find(name: str) -> Optional[str]:
    return name if name else None
print(find('Alice'))  # → Alice
print(find(''))  # → None
result: Optional[int] = None  # → допустимо
# Python 3.10+
def greet(name: str | None = None) -> str:
    return f'Hi, {name or "stranger"}'
print(greet())  # → Hi, stranger

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности