Python Glossary Русский

Python 3.5+Annotations & typingterm

Optional[X] / X | None

optional

Optional[X] means X | None. Since Python 3.10 you can write X | None directly. Used for values that may be absent.

Syntax

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

The usual beginner mix-up: Optional does not mean "you may omit the argument". It only says the value can be None; what makes a parameter optional is a default value, so def f(x: Optional[int]) still demands an argument. Also, mypy no longer adds Optional implicitly — x: int = None is an error these days, so spell out x: int | None = None.

Examples

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

See also

Open in the full glossarydocs.python.orgReport an inaccuracy