[Armin Rigo Mon, Aug 04, 2003 at 03:18:44PM +0200]
Hello Holger,
On Mon, Aug 04, 2003 at 12:08:02PM +0200, holger krekel wrote:
Please let me clarify the concepts behind the current builtinrefactor branch. The main point of the refactoring was to channel all calls to app-level code mainly through two classes:
ScopedCode: a code object with a global and closure scope. (...) InterpretedFunction: a function which will be interpreted at app-level. it derives from ScopedCode and you can use it ala: (...)
I still find this confusing. I believe that the distinction between code objects and functions in pretty fundamental in Python. A code object has no closure whatsoever (reference to global, to default args...).
right before you interpret it you must place it into a context of global(, closure) and local scopes.
It is a lexical object.
'ScopedCode' was not meant to be such a plain code object. It's rather wrapping a plain lexical code object (the cpy one) and tying it into a context of scopes. Maybe the name 'ScopedCode' is not perfect but without this concept you have a lot of boilerplate at various places dealing with code objects and scopes. To me it seemed that the steps 1. tying a code object to certain scopes 2. creating the frame / possibly parsing arguments into locals 3. executing the frame are a useful separation of concerns. cheers, holger