Brett Cannon wrote:
``foo = len(x)`` which loads len (global), loads x (local), calls len, and then stores into foo (local). ... storing built-ins into the local namespace to skip having to try load from the global namespace, fail, and then check the built-in namespace
An in-between option would be to steal an idea from Jython, and to make (some?) namespace dictionaries different from regular dictionaries. Not only do we know what sorts of keys are possible, we almost know what every key is at compile time.