Serhiy Storchaka added the comment:

It is possible to reproduce original bug without hacking the code object or 
bytecode:

>>> eval('lambda %s, *args, **kwargs: (lambda:args)' % (', '.join('a%d'%i for i 
>>> in range(253)),))(*range(256))()
(253, 254, 255)
>>> eval('lambda %s, *args, **kwargs: (lambda:args)' % (', '.join('a%d'%i for i 
>>> in range(254)),))(*range(256))()
(254, 255)
>>> eval('lambda %s, *args, **kwargs: (lambda:args)' % (', '.join('a%d'%i for i 
>>> in range(255)),))(*range(256))()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<string>", line 1, in <lambda>
NameError: free variable 'args' referenced before assignment in enclosing scope

>>> eval('lambda %s, *args, **kwargs: (lambda:kwargs)' % (', '.join('a%d'%i for 
>>> i in range(253)),))(*range(256))()
{}
>>> eval('lambda %s, *args, **kwargs: (lambda:kwargs)' % (', '.join('a%d'%i for 
>>> i in range(254)),))(*range(256))()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<string>", line 1, in <lambda>
NameError: free variable 'kwargs' referenced before assignment in enclosing 
scope
>>> eval('lambda %s, *args, **kwargs: (lambda:kwargs)' % (', '.join('a%d'%i for 
>>> i in range(255)),))(*range(256))()
0

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue18295>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to