Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>I went and took the code found <a href="https://web.archive.org/web/20071006162417/http://book.opensourceproject.org.cn/lamp/python/pythoncook2/opensource/0596007973/pythoncook2-chp-7-sect-6.html" rel="nofollow noreferrer">here</a> and removed the dependency for the deprecated "new" module.</p> <pre><code>import types, copy_reg def code_ctor(*args): # delegate to new.code the construction of a new code object return types.CodeType(*args) def reduce_code(co): # a reductor function must return a tuple with two items: first, the # constructor function to be called to rebuild the argument object # at a future de-serialization time; then, the tuple of arguments # that will need to be passed to the constructor function. if co.co_freevars or co.co_cellvars: raise ValueError, "Sorry, cannot pickle code objects from closures" return code_ctor, (co.co_argcount, co.co_nlocals, co.co_stacksize, co.co_flags, co.co_code, co.co_consts, co.co_names, co.co_varnames, co.co_filename, co.co_name, co.co_firstlineno, co.co_lnotab) # register the reductor to be used for pickling objects of type 'CodeType' copy_reg.pickle(types.CodeType, reduce_code) if __name__ == '__main__': # example usage of our new ability to pickle code objects import cPickle # a function (which, inside, has a code object, of course) def f(x): print 'Hello,', x # serialize the function's code object to a string of bytes pickled_code = cPickle.dumps(f.func_code) # recover an equal code object from the string of bytes recovered_code = cPickle.loads(pickled_code) # build a new function around the rebuilt code object g = types.FunctionType(recovered_code, globals( )) # check what happens when the new function gets called g('world') </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload