Terry Reedy <tjre...@udel.edu> wrote:

> Constant tuples (a tuple whose members are all seen as constants by the 
> compiler) are now pre-compiled and constructed once and put into the 
> code object as such rather than re-constructed with each run of the code.

Sadly that's not entirely accurate.

Tuples whose members are all simple constants are pre-compiled, but here's 
an example of a tuple whose members are all constants but doesn't get 
optimised:

>>> def foo():
        data = (
                ('hello', 42),
                ('world', 24),
                )
        return data

>>> import dis
>>> dis.dis(foo)
  3           0 LOAD_CONST               5 (('hello', 42)) 

  4           3 LOAD_CONST               6 (('world', 24)) 
              6 BUILD_TUPLE              2 
              9 STORE_FAST               0 (data) 

  6          12 LOAD_FAST                0 (data) 
             15 RETURN_VALUE     


-- 
Duncan Booth http://kupuguy.blogspot.com
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to