On Friday, March 18, 2016 at 10:33:46 AM UTC-4, Sven R. Kunze wrote: > On 18.03.2016 15:23, Ian Kelly wrote: > > On Fri, Mar 18, 2016 at 7:47 AM, Ian Kelly <ian.g.ke...@gmail.com> wrote: > >> Your patched version takes two extra arguments. Did you add the > >> defaults for those to the function's __defaults__ attribute? > > And as an afterthought, you'll likely need to replace the function's > > __globals__ with your own as well. > > Thanks again. :-) > > Again, why would it make sense for those dunder attributes to be part of > the function but not of the code object?
Code objects are immutable, and marshal'able (a .pyc file is basically just a magic-numbered, time-stamped, marshalled code object for the module). Marshal can't marshal arbitrary Python objects. Functions are mutable, and constructed at run-time, so can reference arbitrary Python objects. Since you want default values to possibly be user-defined Python objects, the defaults are on the function, not the code object. --Ned. -- https://mail.python.org/mailman/listinfo/python-list