
On Lun, Apr 6, 2009 16:43, Antoine Pitrou wrote:
Cesare Di Mauro <cesare.dimauro <at> a-tono.com> writes:
def f(): return ['a', ('b', 'c')] * (1 + 2 * 3) [...]
With proper constant folding code, both functions can be reduced to a single LOAD_CONST and a RETURN_VALUE (or, definitely, by a single instruction at all with an advanced peephole optimizer).
Lists are mutable, you can't optimize the creation of list literals by storing them as singleton constants.
Regards
Antoine.
You are right, I've mistyped the example. def f(): return ('a', ('b', 'c')) * (1 + 2 * 3) generates a single instruction (depending on the threshold used to limit folding of sequences), whereas def f(): return ['a', ('b', 'c')] * (1 + 2 * 3) needs three. Sorry for the mistake. Cheers, Cesare