[Grok-dev] meet the Grok 1.0 release team

Brandon Craig Rhodes brandon at rhodesmill.org
Wed Dec 3 07:23:56 EST 2008

"Martijn Faassen" <faassen at startifact.com> writes:

> I don't think the word 'pestering' is very appropriate.

I guess I was having fun. :-) I'll try to sound more official.

> To my knowledge tuples are allocated each time the code runs just as
> much as lists are, and not only when the program runs first, otherwise
> things like this wouldn't work:
> mytuple = a, b

It looks to me like the interpreter builds tuples of constants only

>>> def foo():
...    return (1,2,3)
>>> a = foo()
>>> b = foo()
>>> id(a)
>>> id(b)

You're entirely correct, though, that the presence of variables makes
the tuple a dynamically-constructed variable rather than a constant; I
have never thought through the difference before.  But note that
constant sub-structures are only built once, even in the presence of

>>> def bar(x):
...    return (x,9,(1,2))
>>> a = bar(1.1)
>>> b = bar(1.2)
>>> id(a) # big tuple is different
>>> id(b)
>>> id(a[2]) # but little (1,2) tuples inside are the same
>>> id(b[2])

What fun.  Now I have a small topic for the Python Atlanta meetup next
week. :-)

Brandon Craig Rhodes   brandon at rhodesmill.org   http://rhodesmill.org/brandon

More information about the Grok-dev mailing list