Skip to main content

Pointers in Python

Track:
Python Internals & Ecosystem
Type:
Tutorial
Level:
advanced
Room:
Club A
Start:
09:30 on 08 July 2024
Duration:
180 minutes

Abstract

Remember pointers from C/C++? Why don’t we add them to Python? Make any Python object mutable by manipulating it directly in memory through the pointer as you would do in C/C++. Why do this? Well, pointers have no use in Python, but the point is not implementation itself, but all the internal parts of Python programming language that you will touch while implementing it. What you will learn:

  • How to add new piece of syntax to Python. We will implement & and * (address of and dereference) operators just like in C/C++.
  • How to add custom builtin object. Adding new syntax has to do something, right? In our case it will operate on new pointer builtin object.
  • Internal layout of Python objects.
  • How to make our pointer object behave well. Everything in Python is an object and every object internally has to make sure it’s lifecycle does not cause any issues and your program works in a predictable way.
  • How to do something with new object. Having new syntax and object is cool, but it has to interact with other objects somehow. Remember double underscore methods like __add__ and __eq__? We will see how they are implemented internally and our object will have them.
  • How Python objects are garbage collected. Our pointer object will cover all ways Python objects can be garbage collected and all tricky parts of this process. These involve reference counting and tracing garbage collector for cyclic objects.
  • And many more.

Optional: to minimise chances of inconsistencies, it is recommended to have Docker installed


The speaker

Yan Yanchii

Yan Yanchii

I’m a senior software engineer at Kiwi.com, a leading global travel tech company headquartered in the Czech Republic, and I work on the Search team.

I particularly enjoy delving into CPython and its internal workings. My preference for creating things from scratch, as opposed to relying on pre-made solutions, has helped me develop a profound grasp of the technical foundations of software development.

I’m thrilled to share my knowledge and enthusiasm for Python and low-level programming with the Python community.