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