Nick Coghlan added the comment:
The peephole optimiser already makes optimisations like that in a couple of
places (e.g. set -> frozenset):
>>> def f(x):
... if x in {1, 2}: pass
...
>>> f.__code__.co_consts
(None, 1, 2, frozenset({1, 2}))
It's name lookup semantics that are the real minefield. It's one of the reasons
PyPy's JIT can be so much more effective than a static optimiser - because it's
monitoring real execution and inserting the appropriate guards it's not relying
on invalid assumptions about name bindings.
----------
_______________________________________
Python tracker <[email protected]>
<http://bugs.python.org/issue11549>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com