Thanks for the correction. Since I can't imagine the last time I looked was before 2.2, I can only assume that Python's weird scoping led me to the conclusion that closures were useless, and I misremembered that as 'absent'.
Many more thanks for introducing me to the 'nonlocal' keyword - finally a good reason to use Python 3.