[Python-3000] Reminder: Py3k PEPs due by April

Phillip J. Eby pje at telecommunity.com
Wed Apr 11 18:04:58 CEST 2007


At 09:50 PM 4/10/2007 -0700, Guido van Rossum wrote:
>I'm kind of worried about the performance though -- won't you have to
>pay at least for the lookup of __and1__ or __or1__ in the MRO of the
>first argument?

Not if they're tp_* slots.  And we could introduce the feature only for 
new-style classes, thereby preventing any performance hit for existing 
classic classes.  (Classic classes' tp_and1 et al would simply invoke 
normal boolean testing.)

What I find interesting about this proposal is that it comes very close to 
allowing abstract interpretation of arbitrary Python expressions.  If there 
were a couple of other operator pairs like 'if1/if2', you'd be able to take 
a generator expression and transform it to SQL without parsing or bytecode 
decompiling (the two techniques currently used by today's Python ORM's like 
DejaVu).

Unfortunately, to get full abstract interpretation (ala PyPy, but without 
looking at any bytecode), there would need to be a way to handle 
try/except/finally and while loops, and I don't have any ideas about how 
one would implement those.



More information about the Python-3000 mailing list