كيفية استخدام المخلل لحفظ الكائنات في بيثون

يعد Pickle ، الذي يعد جزءًا من مكتبة Python افتراضيًا ، وحدة نمطية مهمة كلما احتجت إلى المثابرة بين جلسات المستخدم. كوحدة نمطية ، يوفر المخلل توفير كائنات Python بين العمليات.

سواء كنت البرمجة ل قاعدة البياناتأو اللعبة أو المنتدى أو بعض التطبيقات الأخرى التي يجب أن تحفظ المعلومات بين الجلسات ، والمخلل مفيد لحفظ المعرفات والإعدادات. يمكن لوحدة المخلل تخزين أشياء مثل أنواع البيانات مثل منطقية ، سلاسل ، صفائف البايت ، قوائم ، قواميس ، وظائف ، وأكثر من ذلك.

ملحوظة: يُعرف مفهوم التخليل أيضًا بالتسلسل والتنظيم والتسوية. ومع ذلك ، فإن النقطة هي نفسها دائمًا — لحفظ كائن في ملف لاستعادته لاحقًا. يحقق التخليل ذلك عن طريق كتابة الكائن كدفق واحد طويل من وحدات البايت.

مثال رمز المخلل في بايثون

لكتابة كائن إلى ملف ، يمكنك استخدام رمز في بناء الجملة التالي:

استيراد المخلل 
كائن = كائن ()
filehandler = open (اسم الملف ، 'w')
pickle.dump (كائن ، filehandler)

إليك كيفية ظهور مثال في العالم الحقيقي:

استيراد المخلل 
استيراد الرياضيات
object_pi = math.pi
file_pi = open ('filename_pi.obj' ، 'w')
pickle.dump (object_pi ، file_pi)

هذا المقتطف يكتب محتويات object_pi إلى الملف ملف file_pi، والتي بدورها لا بد للملف filename_pi.obj في دليل التنفيذ.

لاستعادة قيمة الكائن إلى الذاكرة ، قم بتحميل الكائن من الملف. على افتراض أن المخلل لم يتم استيراده بعد للاستخدام ، ابدأ باستيراده:

استيراد المخلل 
filehandler = open (اسم الملف ، 'r')
كائن = pickle.load (filehandler)

تستعيد التعليمة البرمجية التالية قيمة pi:

استيراد المخلل 
file_pi2 = open ('filename_pi.obj' ، 'r')
object_pi2 = pickle.load (file_pi2)

الكائن جاهز للاستخدام مرة أخرى ، هذه المرة باسم object_pi2. يمكنك بالطبع إعادة استخدام الأسماء الأصلية ، إذا كنت تفضل ذلك. يستخدم هذا المثال أسماء مميزة للوضوح.

أشياء يجب تذكرها حول المخلل

ضع هذه الأشياء في الاعتبار عند استخدام وحدة المخلل:

  • بروتوكول المخلل خاص ببيثون - ليس مضمونًا أن يكون متوافقًا مع اللغات. على الأرجح لن تتمكن من نقل المعلومات لجعلها مفيدة في Perl أو PHP أو Java أو لغات أخرى.
  • لا يوجد أيضًا أي ضمان للتوافق بين إصدارات Python المختلفة. يوجد عدم توافق لأنه لا يمكن إجراء تسلسل لكل بنية بيانات Python بواسطة الوحدة النمطية.
  • افتراضيًا ، يتم استخدام أحدث إصدار من بروتوكول المخلل. يبقى بهذه الطريقة إلا إذا قمت بتغييره يدوياً.

تلميح: اكتشف أيضًا كيفية استخدام رفوف لحفظ الكائنات في بيثون لطريقة أخرى للحفاظ على استمرارية الكائن.