Is an interactive command a block?

Ethan Furman ethan at stoneleaf.us
Fri Nov 20 16:03:43 EST 2009


Steven D'Aprano wrote:
> On Fri, 20 Nov 2009 08:02:38 -0800, Ethan Furman wrote:
>>
>> module scope == global scope
>>
>> That is, there is nothing higher than module scope.  (So, yes, global is
>> a slight misnomer... in Python it means 'global to a module'.)
> 
> Actually there is: built-ins.
> 
> That's why you can access (e.g.) len without having to define it, or 
> import it, first. And what's more, you can do this:
> 
>>>>len([1,2,3])
> 
> 3
> 
>>>>def len(x):  # Shadow the built-in
> ...     return -3
> ...
>>>>len([1,2,3])
> -3
> 
>>>>del len
>>>>len([1,2,3])  # It's back!
> 
> 3

Very good point, I had forgotten.  Of course, injecting into built-ins 
is not recommended.

~Ethan~



More information about the Python-list mailing list