Types
Type Aliases
The type statement names an annotation shape. Here Scores means a dictionary from user IDs to integer scores.
Source
type UserId = int
type Scores = dict[UserId, int]
def best_user(scores: Scores) -> UserId:
return max(scores, key=scores.get)
scores: Scores = {1: 98, 2: 91}
print(best_user(scores))Output
1Modern aliases are runtime objects that keep their alias name for introspection.
Source
print(UserId.__name__)
print(Scores.__name__)Output
UserId
ScoresAssignment-style aliases are still common, but they are just ordinary names bound to existing objects.
Source
LegacyName = str
print(LegacyName("Ada"))
print(LegacyName is str)Output
Ada
TrueNotes
- Use aliases to name repeated or domain-specific annotation shapes.
- A type alias does not validate values at runtime.
- Use
NewTypewhen two values share a runtime representation but should not be mixed statically.
See also
- related: Type Hints
- related: NewType
- related: Union and Optional Types
Run the complete example
Expected output
1
UserId
Ada
Execution time appears here after you run the example.