In C#, Value Types (eg: int, float, etc) are stored on the stack. Method parameters may also be stored on the stack as well. Most everything else, however, is stored on the heap. This includes Lists, objects, etc.
I was wondering, does CPython do the same thing internally? What does it store on the stack, and what does it put on the heap?
All Python objects in the CPython implementation go on the heap. You can read in detail how Python’s memory management works here in the documentation:
Note that Python itself is just a language, and says nothing about how internals like memory management should work; this is a detail left to implementers.