Eric Snow wrote: > On Fri, Aug 5, 2011 at 8:36 AM, Steven D'Aprano > <steve+comp.lang.pyt...@pearwood.info> wrote: >> Eric Snow wrote: >> >>> In Python, three types of objects have special syntax and mechanics >>> for their instantiation, during which a code object is generated: >>> modules, classes, and functions. >> >> I believe you are labouring under a misapprehension. Modules and classes >> don't generate code objects. > > Sorry for any confusion. I was talking specifically about the their > instantiation through their respective special syntax. During that > process a code object is generated for each.
Do you believe that this process of generating a code object and throwing it away is a part of the Python language specification, which any compiler must do in order to call itself "Python", or a mere implementation detail? Is this documented somewhere? If it is not documented, what makes you think that it happens at all? You are writing as if it were self-evidently true, but I don't believe it is self-evident at all. I think you need to demonstrate the truth of two of those three pillars, not just take them for granted. > For classes and modules > the code object is executed and then discarded. I covered this > explicitly in one of the observations. I think your definition of "explicitly" and mine differ here. > Agreed that [non-builtin] functions are the only objects that have a > code object attribute. However, they are not the only objects for > which a code object is generated and executed. Are you talking about the fact that importing a module, class statements and function statements all involve executing a block of code? How does that differ from executing any other fragment of code? Modules are special, of course, because they can get compiled to byte-code, but I trust you're not talking about .pyc files. -- Steven -- http://mail.python.org/mailman/listinfo/python-list