On Fri, Mar 9, 2012 at 6:19 PM, Mark Shannon <m...@hotpy.org> wrote: > The Python API would be changed, but in a backwards compatible way. > exec, eval and __import__ would all gain an optional (keyword-only?) > "builtins" parameter.
No, some APIs effectively define *protocols*. For such APIs, *adding* parameters is almost of comparable import to taking them away, because they require that other APIs modelled on the prototype also change. In this case, not only exec() has to change, but eval, __import__, probably runpy, function creation, eventually any third party APIs for code execution, etc, etc. Adding a new parameter to exec is a change with serious implications, and utterly unnecessary, since the API part is already covered by setting __builtins__ in the passed in globals namespace (which is appropriately awkward to advise people that they're doing something strange with potentially unintended consequences or surprising limitations). That said, binding a reference to the builtin *early* (for example, at function definition time or when a new invocation of the eval loop first fires up) may be a reasonable idea, but you don't have to change the user facing API to explore that option - it works just as well with "__builtins__" as an optional value in the existing global namespace. Cheers, Nick. -- Nick Coghlan | ncogh...@gmail.com | Brisbane, Australia _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com