Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Python

पायथन वस्तु क्रमांकन

क्रमांकन एक प्रक्रिया है जिसमें एक वस्तु को एक प्रारूप में बदल दिया जाता है जिसे संग्रहीत / सहेजा जा सकता है (एक फ़ाइल या मेमोरी बफर में), इसलिए हम इसे बाद में deserialize करने और मूल सामग्री / वस्तु को क्रमबद्ध प्रारूप से पुनर्प्राप्त करने में सक्षम हैं। हम इन सभी कार्यों को करने के लिए एक अजगर अचार मॉड्यूल का उपयोग करने जा रहे हैं।

अचार क्या है?

पायथन अचार मॉड्यूल का उपयोग अजगर वस्तु संरचनाओं को क्रमबद्ध और डी-क्रमबद्ध करने के लिए किया जाता है। किसी भी प्रकार की अजगर वस्तुओं (सूची, तानाशाही, आदि) को बाइट स्ट्रीम (0s और 1s) में परिवर्तित करने की प्रक्रिया को अचार बनाना या क्रमांकन या फ़्लैटनिंग या मार्शलिंग कहा जाता है। हम अनपिकलिंग नामक प्रक्रिया द्वारा बाइट स्ट्रीम (पिकलिंग के माध्यम से उत्पन्न) को वापस पायथन ऑब्जेक्ट्स में परिवर्तित कर सकते हैं।

किसी वस्तु को चुनने के लिए हमें बस -

. की आवश्यकता होती है
  • अचार आयात करें
  • डंप () फ़ंक्शन को कॉल करें
import pickle
class Vehicle:
   def __init__(self, number_of_doors, color):
      self.number_of_doors = number_of_doors
      self.color = color
class Car(Vehicle):
   def __init__(self, color):
      Vehicle.__init__(self, 5, color)
Maruti = Car('Red')
print(str.format('My Vehicle Maruti is {0} and has {1} doors', Maruti.color, Maruti.number_of_doors))
pickle_Maruti = pickle.dumps(Maruti)
print('Here is my pickled Vehicle: ')
print(pickle_Maruti)

आउटपुट

My Vehicle Maruti is Red and has 5 doors
Here is my pickled Vehicle:
b'\x80\x03c__main__\nCar\nq\x00)\x81q\x01}q\x02(X\x0f\x00\x00\x00number_of_doorsq\x03K\x05X\x05\x00\x00\x00colorq\x04X\x03\x00\x00\x00Redq\x05ub.'

उपरोक्त उदाहरण में, हमने कार वर्ग का एक उदाहरण बनाया है और फिर हमने इसे चुना है, अपनी कार के उदाहरण को बाइट्स की एक साधारण सरणी में बदल दिया है। हमारे कार इंस्टेंस को चुनने के बाद, हम इसे आसानी से बाइनरी फ़ाइल या डीबी फ़ील्ड में स्टोर कर सकते हैं और बाद में ऑब्जेक्ट पदानुक्रम में बाइट्स के इस समूह को वापस बदलने के लिए इसे पुनर्स्थापित कर सकते हैं।

नोट:यदि हम अचार वाली वस्तु के साथ एक फ़ाइल बनाना चाहते हैं, तो हमें डंप () विधि के बजाय डंप () विधि का उपयोग करने की आवश्यकता है।

अनपिकलिंग

यह उलटा (या अचार बनाना) ऑपरेशन है, जहां हम बाइनरी स्ट्रीम लेते हैं और इसे ऑब्जेक्ट पदानुक्रम में परिवर्तित करते हैं।

अचार मॉड्यूल के लोड () फ़ंक्शन का उपयोग करके अनपिकलिंग किया जाता है और बाइट स्ट्रीम से एक पूर्ण ऑब्जेक्ट पदानुक्रम वापस लौटाता है।

नीचे लोड है

import pickle
class Vehicle:
   def __init__(self, number_of_doors, color):
      self.number_of_doors = number_of_doors
      self.color = color
class Car(Vehicle):
   def __init__(self, color):
      Vehicle.__init__(self, 5, color)
Maruti = Car('Red')
print(str.format('My Vehicle Maruti is {0} and has {1} doors', Maruti.color, Maruti.number_of_doors))
pickle_Maruti = pickle.dumps(Maruti)
#Now, let's unpickle our car Maruti creating another instance, another car ... unpickle_Maruti
Hyundai = pickle.loads(pickle_Maruti)
#Set another color of our new instance
Hyundai.color = 'Black'
print(str.format("Hyundai is {0} ", Hyundai.color))
print(str.format("Maruti is {0} ", Maruti.color))

ऊपर के उदाहरण में, आप देख सकते हैं कि हमने अपनी पहली कार ऑब्जेक्ट (मारुति) को चुना है और फिर हमने इसे दूसरे वेरिएबल (हुंडई) में अनपिक किया है और इसलिए हमारे पास एक अर्थ में - हुंडई बनाने के लिए मारुति को क्लोन किया गया है।

आउटपुट

My Vehicle Maruti is Red and has 5 doors
Hyundai is Black
Maruti is Red

अचार बनाम JSON

JSON जावास्क्रिप्ट ऑब्जेक्ट नोटेशन के लिए खड़ा है, डेटा-इंटरचेंज के लिए एक हल्का प्रारूप है और मानव पठनीय है। अचार पर JSON का एक बड़ा लाभ यह है कि यह मानकीकृत और भाषा-स्वतंत्र है। यह अचार से कहीं ज्यादा सुरक्षित और तेज है।

अचार का एक और विकल्प cPickle है, जो काफी हद तक अचार की तरह होता है लेकिन C भाषा में लिखा जाता है और 1000 गुना तेज होता है। आप अचार और cPickle के लिए एक ही फाइल का उपयोग कर सकते हैं।

import json
mylist = [2, 4, 5, "ab", "cd", "ef"]
print("Here is my list: ", mylist)
json_string = json.dumps(mylist )
print("Here is my json encoded object: ", json_string)
print ("Here is JSON back to a data structure: ",json.loads(json_string))

आउटपुट

Here is my list: [2, 4, 5, 'ab', 'cd', 'ef']
Here is my json encoded object: [2, 4, 5, "ab", "cd", "ef"]
Here is JSON back to a data structure: [2, 4, 5, 'ab', 'cd', 'ef']

उपरोक्त कोड में, हम पहले ऑब्जेक्ट (मेरी सूची) लेते हैं और स्ट्रिंग को वापस करने के लिए "डंप" विधि का उपयोग करते हैं और फिर JSON को डेटा संरचना में वापस लोड करने के लिए हम "लोड" विधि का उपयोग करते हैं जो एक स्ट्रिंग को बदल देता है और इसे बदल देता है JSON ऑब्जेक्ट डेटा संरचना।


  1. पायथन वस्तु तुलना "है" बनाम "=="

    इस लेख में, हम वस्तु तुलना के बारे में जानेंगे अर्थात संचालिका और समानता संचालिका . के बीच समानता ऑपरेटर पारित तर्क के मूल्य पर काम करता है जबकि ऑपरेटर तर्क के रूप में पारित दो वस्तुओं के संदर्भ की तुलना करता है। समानता के मामले में तर्क की सामग्री की तुलना उनके संदर्भों को अनदेखा करते हुए की जा

  1. पायथन में किसी वस्तु को कैसे नष्ट करें?

    एक वर्ग विशेष विधि __del__() को लागू करता है, जिसे डिस्ट्रक्टर कहा जाता है, जिसे तब लागू किया जाता है जब इंस्टेंस नष्ट होने वाला होता है। इस पद्धति का उपयोग किसी उदाहरण द्वारा उपयोग किए गए किसी भी गैर-स्मृति संसाधनों को साफ करने के लिए किया जा सकता है। उदाहरण यह __del__() विनाशक उस उदाहरण के वर्ग न

  1. पायथन में टाइम टुपल क्या है?

    datetime.date उदाहरणों की timetuple() विधि time.struct_time प्रकार की वस्तु लौटाती है। स्ट्रक्चर_टाइम एक नामित टपल ऑब्जेक्ट है (एक नामित टपल ऑब्जेक्ट में ऐसे गुण होते हैं जिन्हें किसी इंडेक्स या नाम से एक्सेस किया जा सकता है)। डेलाइट सेविंग टाइम सक्रिय है या नहीं यह इंगित करने के लिए स्ट्रक्चर_टाइम