Understanding Python's yield keyword, decorators, and metaclasses

I'm slowly but surely learning how to code like a proper Pythonista. However there are a few subjects that still cause my eyes to glaze over.

Fortunately a wonderful individual over at StackOverflow has written out some amazing answers to some advanced Python topics.

The Python yield keyword explained

Understanding Python decorators

What is a metaclass in Python?

I found the Python decorator article to be quite illuminating. Coming from JavaScript where functions are also first-class citizens I found it surprising to find the same was true in Python. I think Python's white space confused me, it made all the function definitions look too neat and pretty to be equated with JavaScript function's curly braces.