Function pickling¶
REFERENCE: The python cookbook.
- sage.misc.fpickle.code_ctor(*args)[source]¶
- EXAMPLES: - This indirectly tests this function. - sage: def foo(a, b, c=10): return a+b+c sage: sage.misc.fpickle.reduce_code(foo.__code__) (<cyfunction code_ctor at ...>, ...) sage: unpickle_function(pickle_function(foo)) <function foo at ...> - >>> from sage.all import * >>> def foo(a, b, c=Integer(10)): return a+b+c >>> sage.misc.fpickle.reduce_code(foo.__code__) (<cyfunction code_ctor at ...>, ...) >>> unpickle_function(pickle_function(foo)) <function foo at ...> 
- sage.misc.fpickle.pickle_function(func)[source]¶
- Pickle the Python function func. This is not a normal pickle; you must use the unpickle_function method to unpickle the pickled function. - NOTE: This does not work on all functions, but does work on ‘surprisingly’ many functions. In particular, it does not work on functions that includes nested functions. - INPUT: - func– a Python function
 - OUTPUT: string - EXAMPLES: - sage: def f(N): return N+1 ... sage: g = pickle_function(f) sage: h = unpickle_function(g) sage: h(10) 11 - >>> from sage.all import * >>> def f(N): return N+Integer(1) ... >>> g = pickle_function(f) >>> h = unpickle_function(g) >>> h(Integer(10)) 11 
- sage.misc.fpickle.reduce_code(co)[source]¶
- EXAMPLES: - sage: def foo(N): return N+1 sage: sage.misc.fpickle.reduce_code(foo.__code__) (<cyfunction code_ctor at ...>, ...) - >>> from sage.all import * >>> def foo(N): return N+Integer(1) >>> sage.misc.fpickle.reduce_code(foo.__code__) (<cyfunction code_ctor at ...>, ...) - Test that the constructed code matches the original code: - sage: ctor, args = sage.misc.fpickle.reduce_code(foo.__code__) sage: ctor(*args) == foo.__code__ True - >>> from sage.all import * >>> ctor, args = sage.misc.fpickle.reduce_code(foo.__code__) >>> ctor(*args) == foo.__code__ True 
- sage.misc.fpickle.unpickleMethod(im_name, __self__, im_class)[source]¶
- support function for copyreg to unpickle method refs 
- sage.misc.fpickle.unpickleModule(name)[source]¶
- support function for copyreg to unpickle module refs 
- sage.misc.fpickle.unpickle_function(pickled)[source]¶
- Unpickle a pickled function. - EXAMPLES: - sage: def f(N, M): return N*M ... sage: unpickle_function(pickle_function(f))(3,5) 15 - >>> from sage.all import * >>> def f(N, M): return N*M ... >>> unpickle_function(pickle_function(f))(Integer(3),Integer(5)) 15