[Python-Dev] pyc files, constant folding and borderline portability issues
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 <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
More information about the Python-Dev
mailing list