[Python-Dev] pyc files, constant folding and borderline portability issues (original) (raw)

Cesare Di Mauro cesare.dimauro at a-tono.com
Mon Apr 6 18:34:53 CEST 2009


On Lun, Apr 6, 2009 16:43, Antoine Pitrou wrote:

Cesare Di Mauro <cesare.dimauro 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 LOADCONST and a RETURNVALUE (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



More information about the Python-Dev mailing list