functions, optional parameters

Chris Angelico rosuav at gmail.com
Fri May 8 12:02:42 EDT 2015


On Sat, May 9, 2015 at 1:48 AM, Ian Kelly <ian.g.kelly at gmail.com> wrote:
> On May 8, 2015 9:26 AM, "Steven D'Aprano"
> <steve+comp.lang.python at pearwood.info> wrote:
>>
>> Do you think that Python will re-compile the body of the function every
>> time
>> you call it? Setting the default is part of the process of compiling the
>> function.
>
> To be a bit pedantic, that's not accurate. The default is evaluated when the
> function object is created, i.e. when the def statement is executed at
> runtime, not when the underlying code object is compiled.

Aside from constructing two closures in the same context and proving
that their __code__ attributes point to the same object, is there any
way to distinguish between "code object compilation time" and "def
execution time"? I just played around with it, and as far as I can
tell, code objects are completely read-only.

ChrisA



More information about the Python-list mailing list