Functions as values
A function in Python is just an object. You can assign it to a variable, store it in a list or dict, pass it to another function, or return it from one. There is nothing special about its name or its position in the source.
This is what people mean when they say functions are "first-class". The language treats them like any other value, and any pattern that works for ordinary values works for functions too.
Once you internalize this, a lot of patterns become obvious. Callbacks, event handlers, sorting keys, decorators, plugin systems: they all rely on passing functions around. The core feature is just "functions are values".