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 <rep...@bugs.python.org>
<http://bugs.python.org/issue11549>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to