Description
Python implements dynamic type behavior using a statically typed language (C), only to then offer static type annotations on top of a dynamically typed language (Python). This paradox is the focus of this talk. We will look at the basics of type annotations, how polymorphism is implemented in C with PyObject and PyObject_HEAD, and how CPython API functions like PyObject_TypeCheck() work. Despite the chasm between type annotations and runtime reality, their benefits will be demonstrated.