I was surfing through the videos archived on pyvideo.org and came across these three excellent presentations by Brandon Rhodes from PyOhio 2011.
Names, Objects, and Plummeting from the Cliff
This first video I found helpful in understanding how python handles basic variables (names) and objects through functions calls and reference counting. This talk presents the concept in a very straight forward way that is very accessible, even to new programmers without any major background in computer science. Coming from another language where pass by reference is handled differently, I found this a valuable primer. I highly recommend this video for anyone new to python.
Procedures, Objects, & Reusability
The second video is about procedural vs. object oriented python. Brandon uses the gnarly implementation of httplib (and his quest to use the http parser) to illustrate the difficulty of understanding tightly coupled code, especially within an object. He make an argument for times it is appropriate to use stand alone procedures vs. object methods that perform singular operations with clear inputs/outputs/expectations. Having worked in a procedural environment with tight code coupling and limited to no object orientated paradigm, I have seen definite value to strictly procedural functions, either as an end point or transitional stage to OO. I have found myself at times times simulating OO with stand alone functions and data structures. There is a time and a place for good procedural programming.
Squinting at Python Objects
The third video is a sort of follow up where Brandon explains a package he developed to help him safely examine the properties of objects that are immutable. This one dives deeper into the technical realm, but is nevertheless interesting. I have not presently worked with python code at this level, so I found this talk fascinating.