आप के बजाय एक वास्तविक समारोह का उपयोग करना होगा, एक है कि देश में लाने योग्य है (एक और समारोह के अंदर से नहीं लगाए गए):
import cPickle as pickle
from numpy import sin, cos, array
def tmp(x):
return sin(x)+cos(x)
test = array([[tmp,tmp],[tmp,tmp]],dtype=object)
pickle.dump(test, open('test.lambda','w'))
समारोह वस्तु अभी भी एक lambda
अभिव्यक्ति द्वारा उत्पादित किया जा सकता है, लेकिन केवल आप अगर बाद में जिसके परिणामस्वरूप समारोह वस्तु एक ही नाम दे: केवल
tmp = lambda x: sin(x)+cos(x)
tmp.__name__ = 'tmp'
test = array([[tmp, tmp], [tmp, tmp]], dtype=object)
क्योंकि pickle
भंडार मॉड्यूल और एक समारोह वस्तु के लिए नाम; उपरोक्त उदाहरण में, tmp.__module__
और tmp.__name__
अब उस स्थान पर वापस इंगित करें जहां एक ही ऑब्जेक्ट अनपिकलिंग के बाद फिर से मिल सकता है।
स्रोत
2013-05-18 16:19:57
ऐसा करने के लिए एक अजीब चीज़ की तरह लगता है। उपयोग-केस क्या है? – Aya
@Aya lamdify SymPy में lambda कार्यों को बनाने के लिए बहुत सुविधाजनक बनाता है। और मैं साइथन का उपयोग करके उनका मूल्यांकन करना चाहता हूं। आप [इस जानकारी को और जानकारी के लिए देख सकते हैं] (http://stackoverflow.com/questions/16295140/numerical-integration-over-a-matrix-of-functions-sympy-and-scipy) –
ठीक है, मैं नहीं करता साइथन के बारे में बहुत कुछ नहीं पता, लेकिन मार्टिजन का समाधान केवल तभी काम करेगा जब साइथन के लिए पाइथन फ़ाइल आयात करना संभव हो, जिसमें 'tmp (x)' फ़ंक्शन परिभाषित किया गया था। – Aya