logo

Python kodināšanas izpratne ar piemēru

Programmā Python mums dažreiz ir jāsaglabā objekts diskā vēlākai lietošanai. To var izdarīt, izmantojot Python sālījumu. Šajā rakstā mēs uzzināsim par marinētiem gurķiem Python, kā arī dažus piemērus.

Python Pickle — Python objektu serializācija

Python marinētu gurķu modulis tiek izmantots Python objektu struktūras serializēšanai un deserializēšanai. Jebkuru Python objektu var marinēt, lai to varētu saglabāt diskā. Pickle dara objektu serializē, pirms to ieraksta failā. Kodināšana ir veids, kā pārvērst Python objektu (sarakstu, vārdnīcu utt.) rakstzīmju straumē. Ideja ir tāda, ka šī rakstzīmju plūsma satur visu informāciju, kas nepieciešama objekta rekonstrukcijai citā Python skripts. Tas nodrošina iespēju pārvērst jebkuru Python objektu baitu straumē. Šajā baitu straumē ir ietverta visa būtiskā informācija par objektu, lai to varētu rekonstruēt vai noņemt un atgūt sākotnējā formā jebkurā Python.



Pickling-in-python-(1)

Serializācijas darbs

Python Pickle piemērs

Kodināšana bez faila

Šajā piemērā mēs serializēsim vārdnīcas datus un saglabāsim tos baitu straumē. Pēc tam šie dati tiek deserializēti, izmantojot pickle.loads() funkcija atpakaļ sākotnējā Python objektā.

Python3








import> pickle> # initializing data to be stored in db> Omkar>=> {>'key'> :>'Omkar'>,>'name'> :>'Omkar Pathak'>,> 'age'> :>21>,>'pay'> :>40000>}> Jagdish>=> {>'key'> :>'Jagdish'>,>'name'> :>'Jagdish Pathak'>,> 'age'> :>50>,>'pay'> :>50000>}> # database> db>=> {}> db[>'Omkar'>]>=> Omkar> db[>'Jagdish'>]>=> Jagdish> # For storing> # type(b) gives ;> b>=> pickle.dumps(db)> # For loading> myEntry>=> pickle.loads(b)> print>(myEntry)>

>

>

Izvade:

{'Omkar': {'key': 'Omkar', 'name': 'Omkar Pathak', 'age': 21, 'pay': 40000},  'Jagdish': {'key': 'Jagdish', 'name': 'Jagdish Pathak', 'age': 50, 'pay': 50000}}>

Kodināšana ar vīli

Šajā piemērā mēs izmantosim pickle failu, lai vispirms tajā ierakstītu datus, izmantojot funkciju pickle.dump(). Pēc tam, izmantojot funkciju pickle.load(), mēs ielādēsim marinētu smalko tekstu Python skriptā un izdrukāsim tā datus Python vārdnīcas veidā.

Python3




# Python3 program to illustrate store> # efficiently using pickle module> # Module translates an in-memory Python object> # into a serialized byte stream—a string of> # bytes that can be written to any file-like object.> import> pickle> def> storeData():> ># initializing data to be stored in db> >Omkar>=> {>'key'> :>'Omkar'>,>'name'> :>'Omkar Pathak'>,> >'age'> :>21>,>'pay'> :>40000>}> >Jagdish>=> {>'key'> :>'Jagdish'>,>'name'> :>'Jagdish Pathak'>,> >'age'> :>50>,>'pay'> :>50000>}> ># database> >db>=> {}> >db[>'Omkar'>]>=> Omkar> >db[>'Jagdish'>]>=> Jagdish> > ># Its important to use binary mode> >dbfile>=> open>(>'examplePickle'>,>'ab'>)> > ># source, destination> >pickle.dump(db, dbfile)> >dbfile.close()> def> loadData():> ># for reading also binary mode is important> >dbfile>=> open>(>'examplePickle'>,>'rb'>)> >db>=> pickle.load(dbfile)> >for> keys>in> db:> >print>(keys,>'=>'>, db[keys])> >dbfile.close()> if> __name__>=>=> '__main__'>:> >storeData()> >loadData()>

>

>

Izvade:

Omkar =>{'atslēga': 'Omkar', 'nosaukums': 'Omkar Pathak', 'vecums': 21, 'maksa': 40000} Jagdish => {'key ': 'Jagdish', 'name': 'Jagdish Pathak', 'vecums': 50, 'pay': 50000}>

Pickle izmantošanas priekšrocības programmā Python

  1. Rekursīvi objekti (objekti, kas satur atsauces uz sevi): Pickle seko objektiem, kurus tas jau ir serializējis, tāpēc vēlākās atsauces uz to pašu objektu vairs netiks serializētas. (Tādēļ maršala modulis sabojājas.)
  2. Objektu koplietošana (atsauces uz vienu un to pašu objektu dažādās vietās): Tas ir līdzīgi objektiem, kas atsaucas uz sevi. Pickle objektu saglabā vienu reizi un nodrošina, ka visas pārējās atsauces norāda uz galveno kopiju. Koplietotie objekti paliek koplietoti, kas var būt ļoti svarīgi mainīgiem objektiem.
  3. Lietotāja definētas klases un to gadījumi: Marshal tos vispār neatbalsta, taču Pickle var caurspīdīgi saglabāt un atjaunot klases gadījumus. Klases definīcijai ir jābūt importējamai un jāatrodas tajā pašā modulī, kurā objekts tika saglabāts.

Pickle izmantošanas trūkumi programmā Python

  1. Atkarība no Python versijas: Picle dati ir tik jutīgi pret izveidoto Python versiju. Marinēts objekts, kas izveidots ar vienu Python versiju, ko, iespējams, nevar atdalīt ar dažādām versijām.
  2. Nelasāms: Sālītā gurķa formāts ir binārs, un cilvēkiem tas nav viegli lasāms vai rediģējams. Līgumus, kas ir JSON vai XML formātā, var viegli modificēt.
  3. Liela datu neefektivitāte: Lielas datu kopas var palēnināt kodināšanu un atdalīšanu. Serializācija varētu būt piemērotāka šādiem lietošanas gadījumiem.

Secinājums

Lai gan Python Pickle piedāvā objektu serializācijas iespējas, izstrādātāji, kas saglabā ierobežojumus, jo īpaši strādājot ar dažādām Python versijām vai strādājot ar lielām datu kopām. Ir svarīgi atcerēties, ka vienmēr jāņem vērā savas lietojumprogrammas īpašās vajadzības, lai noteiktu, vai ickle vai alternatīva, piemēram, JSON, XML, ir piemērota serializācijai.

setinterval javascript