[Python-Dev] Re: Caching objects in memory (original) (raw)
Guido van Rossum gvanrossum at gmail.com
Mon Apr 25 18:57:08 CEST 2005
- Previous message: [Python-Dev] Re: Caching objects in memory
- Next message: [Python-Dev] Re: Re: Caching objects in memory
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
I was in my second class of the Python workshop I'm giving here in one Argentine University, and I was explaining how to think using name/object and not variable/value.
Using id() for being pedagogic about the objects, the kids saw that id(3) was always the same, but id([]) not. I explained to them that Python, in some circumstances, caches the object, and I kept them happy enough. But I really don't know what objects and in which circumstances.
Aargh! Bad explanation. Or at least you're missing something: mutable objects (like lists) can never be cached, because they have explicit object semantics. For example each time the expression [] is evaluated it must produce a fresh list object (though it may be recycled from a GC'ed list object -- or any other GC'ed object, for that matter).
But for immutable objects (like numbers, strings and tuples) the implementation is free to use caching. In practice, I believe ints between -5 and 100 are cached, and 1-character strings are often cached (but not always).
Hope this helps! I would think this is in the docs somewhere but probably not in a place where one would ever think to look...
-- --Guido van Rossum (home page: http://www.python.org/~guido/)
- Previous message: [Python-Dev] Re: Caching objects in memory
- Next message: [Python-Dev] Re: Re: Caching objects in memory
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]