الفرق بين المراجعتين لصفحة: «Python/Pickler»

من موسوعة حسوب
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE:التابع <code>Cursor.execute()‎</code> في بايثون}}</noinclude> يستخدم هذا الصنف ملفًّا يكتب فيه تد...'
 
لا ملخص تعديل
 
(1 مراجعات متوسطة بواسطة نفس المستخدم غير معروضة)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE:التابع <code>Cursor.execute()‎</code> في بايثون}}</noinclude>
<noinclude>{{DISPLAYTITLE:الصنف <code>pickle.Pickler()‎</code> في بايثون}}</noinclude>


يستخدم هذا الصنف ملفًّا يكتب فيه تدفق البيانات المسلسلة.
يستخدم هذا الصنف ملفًّا يكتب فيه تدفق البيانات المسلسلة.
سطر 13: سطر 13:
=== <code>file</code> ===
=== <code>file</code> ===


يجب أن يمتلك كائن الملفّ تابع write()‎ يستقبل معامل بايتات واحدًا فقط؛ لهذا يمكن أن يكون ملفًّا مخزّنًا في القرص الصلب مفتوحًا لكتابة البيانات الثنائية، أو نسخة من io.BytesIO، أو أي كائن مخصّص آخر يطابق هذه الشروط.
يجب أن يمتلك كائن الملفّ تابع <code>write()</code>‎ يستقبل معامل بايتات واحدًا فقط؛ لهذا يمكن أن يكون ملفًّا مخزّنًا في القرص الصلب مفتوحًا لكتابة البيانات الثنائية، أو نسخة من <code>io.BytesIO</code>، أو أي كائن مخصّص آخر يطابق هذه الشروط.


=== <code>protocol</code> ===
=== <code>protocol</code> ===


معامل اختياري، وهو عدد صحيح يُعلم المُسلسِل باستخدام البرتوكول المحدّد بالرقم المعطى، والبروتوكولات المدعومة هي من 0 إلى قيمة الثابت HIGHEST_PROTOCOL.  
معامل اختياري، وهو عدد صحيح يُعلم المُسلسِل باستخدام البرتوكول المحدّد بالرقم المعطى، والبروتوكولات المدعومة هي من <code>0</code> إلى قيمة الثابت <code>HIGHEST_PROTOCOL</code>.  


=== <code>*</code> ===
=== <code>*</code> ===


معامل اختياري، وهو عدد صحيح يخبر المُسَلسِل بأن يستخدم البروتوكول المعطى. البروتوكولات المدعومة هي من 0 إلى HIGHEST_PROTOCOL. وفي حال عدم تحديد قيمة هذا المعامل تكون القيمة الافتراضية هي قيمة الثابت DEFAULT_PROTOCOL، أما في حال تقديم رقم سالب فإنّ الدالة ستختار قيمة HIGHEST_PROTOCOL.
معامل اختياري، وهو عدد صحيح يخبر المُسَلسِل بأن يستخدم البروتوكول المعطى. البروتوكولات المدعومة هي من <code>0</code> إلى قيمة الثابت <code>HIGHEST_PROTOCOL</code>. وفي حال عدم تحديد قيمة هذا المعامل تكون القيمة الافتراضية هي قيمة الثابت <code>DEFAULT_PROTOCOL</code>، أما في حال تقديم رقم سالب فإنّ الدالة ستختار قيمة الثابت <code>HIGHEST_PROTOCOL</code>.


=== <code>fix_imports</code> ===
=== <code>fix_imports</code> ===


إن أخذ هذا المعامل القيمة True وكانت قيمة المعامل protocol أقل من فإنّ وحدة pickle ستحاول ربط الأسماء الجديدة في الإصدار 3 من بايثون بأسماء الوحدات القديمة المستخدمة في الإصدار 2 من بايثون، بحيث يكون تدفق البيانات مقروءًا في الإصدار 2 من بايثون.
إن أخذ هذا المعامل القيمة <code>True</code> وكانت قيمة المعامل <code>protocol</code> أقل من <code>3</code>، فإنّ وحدة <code>[[Python/pickle|pickle]]</code> ستحاول ربط الأسماء الجديدة في الإصدار 3 من بايثون بأسماء الوحدات القديمة المستخدمة في الإصدار 2 من بايثون، بحيث يكون تدفق البيانات مقروءًا في الإصدار 2 من بايثون.
 


== توابع الصنف <code>Pickler</code> ==
== توابع الصنف <code>Pickler</code> ==


== التابع <code>dump()‎</code> ==
=== التابع <code>[[Python/Pickler/dump|dump()‎]]</code> ===
يكتب التابع تمثيلًا مُسلسَلًا للكائن المُعطى في كائن الملف المفتوح والمحدّد في الدالة البانية للصنف.


== التابع <code>persistent_id()‎</code> ==
=== التابع <code>[[Python/Pickler/persistent id|persistent_id()]]‎</code> ===
لا يؤدي هذا التابع افتراضيًا أي وظيفة، والهدف من وجوده هو إمكانية إعادة تعريفه override بواسطة صنف فرعي.


== خصائص الصنف <code>Pickler</code> ==
== خصائص الصنف <code>Pickler</code> ==
سطر 38: سطر 39:
=== <code>dispatch_table</code> ===
=== <code>dispatch_table</code> ===


جدول الإرسال dispatch table الخاص بكائنات pickler هو سجلّ لدوال الاختزال reduction functions التي تكون من النوع الذي يمكن التصريح عنه بواسطة الدالة copyreg.pickle()‎. هذا الجدول هو كائن ربط mapping تكون مفاتيحه أصنافًا وقيمه دوال اختزال. تأخذ دالة الاختزال معاملًا واحدًا من معاملات الصنف المرتبط بها، ويجب أن تكون واجهتها مطابقة لواجهة التابع ‎__reduce__()‎.
جدول الإرسال dispatch table الخاص بكائنات <code>pickler</code> هو سجلّ لدوال الاختزال reduction functions التي تكون من النوع الذي يمكن التصريح عنه بواسطة الدالة <code>[[Python/copyreg/pickle|copyreg.pickle()]]</code>‎. هذا الجدول هو كائن ربط mapping تكون مفاتيحه أصنافًا وقيمه دوال اختزال. تأخذ دالة الاختزال معاملًا واحدًا من معاملات الصنف المرتبط بها، ويجب أن تكون واجهتها مطابقة لواجهة التابع ‎<code>__reduce__()</code>‎.


لا يمتلك كائن pickler افتراضيًا الخاصية dispatch_table، وسيستخدم عوضًا عنها جدول الإرسال الذي تتحكم به وحدة copyreg. ولكن يمكن تخصيص عملية السلسلة لكائن pickler معيّن عن طريق جعل خاصية dispatch_table تتصرّف ككائن شبيه بالقواميس. أما إن امتلك الصنف المتفرّع من الصنف Pickler خاصية dispatch_table فإنّها ستستخدم حينئذٍ كجدول إرسال افتراضي لنسخ ذلك الصنف.
لا يمتلك كائن <code>pickler</code> افتراضيًا الخاصية <code>dispatch_table</code>، وسيستخدم عوضًا عنها جدول الإرسال الذي تتحكم به وحدة <code>[[Python/copyreg|copyreg]]</code>. ولكن يمكن تخصيص عملية السلسلة لكائن <code>pickler</code> معيّن عن طريق جعل خاصية <code>dispatch_table</code> تتصرّف ككائن شبيه بالقواميس. أما إن امتلك الصنف المتفرّع من الصنف <code>Pickler</code> خاصية <code>dispatch_table</code> فإنّها ستستخدم حينئذٍ كجدول إرسال افتراضي لنسخ ذلك الصنف.


راجع قسم جداول الإرسال للاطلاع على الأمثلة.
راجع [[Python/pickle#.D8.AC.D8.AF.D8.A7.D9.88.D9.84 .D8.A7.D9.84.D8.A5.D8.B1.D8.B3.D8.A7.D9.84 Dispatch Tables|قسم جداول الإرسال]] في وحدة <code>pickle</code> للاطلاع على الأمثلة.


ملاحظة: هذه الخاصية جديدة في الإصدار 3.3 من بايثون.
'''ملاحظة:''' هذه الخاصية جديدة في الإصدار 3.3 من بايثون.


=== <code>fast</code> ===
=== <code>fast</code> ===


هذه الخاصية مهملة. تفعّل هذه الخاصية النمط السريع fast mode إن أخذت القيمة True. يعطّل النمط السريع استخدام المذكرة memo، الأمر الذي يساهم في تسريع عملية السلسلة وذلك بعدم إنتاج شيفرة عمليات PUT فائضة عن الحاجة. يجب عدم استخدام هذه الخاصية مع الكائنات التي تمتلك إشارت إلى نفسها، لأنّ ذلك سيدخل كائن Pickler حلقة لا نهائية.
هذه الخاصية مهملة. تفعّل هذه الخاصية النمط السريع fast mode إن أخذت القيمة <code>True</code>. يعطّل النمط السريع استخدام المذكرة memo، الأمر الذي يساهم في تسريع عملية السلسلة وذلك بعدم إنتاج شيفرة عمليات <code>PUT</code> فائضة عن الحاجة. يجب عدم استخدام هذه الخاصية مع الكائنات التي تمتلك إشارت إلى نفسها، لأنّ ذلك سيدخل كائن <code>Pickler</code> حلقة لا نهائية.


يمكنك استخدام الدالة pickletools.optimize()‎ إن كنت بحاجة إلى عمليات سلسلة مضغوطة ولا تستهلك مساحة كبيرة.
يمكنك استخدام الدالة <code>[[Python/pickletools/optimize|pickletools.optimize()]]</code>‎ إن كنت بحاجة إلى عمليات سلسلة مضغوطة ولا تستهلك مساحة كبيرة.


== انظر أيضًا ==
== انظر أيضًا ==


* الصنف <code>Unpickler</code> : يستخدم هذا الصنف ملفًّا ثنائيًا يقرأ منه تدفق البيانات المسلسلة.
* [[Python/Unpickler|الصنف <code>Unpickler</code>]] : يستخدم هذا الصنف ملفًّا ثنائيًا يقرأ منه تدفق البيانات المسلسلة.


== مصادر ==
== مصادر ==

المراجعة الحالية بتاريخ 14:54، 20 سبتمبر 2018


يستخدم هذا الصنف ملفًّا يكتب فيه تدفق البيانات المسلسلة.

البنية العامة

class pickle.Pickler(file, protocol=None, *, fix_imports=True)

المعاملات

file

يجب أن يمتلك كائن الملفّ تابع write()‎ يستقبل معامل بايتات واحدًا فقط؛ لهذا يمكن أن يكون ملفًّا مخزّنًا في القرص الصلب مفتوحًا لكتابة البيانات الثنائية، أو نسخة من io.BytesIO، أو أي كائن مخصّص آخر يطابق هذه الشروط.

protocol

معامل اختياري، وهو عدد صحيح يُعلم المُسلسِل باستخدام البرتوكول المحدّد بالرقم المعطى، والبروتوكولات المدعومة هي من 0 إلى قيمة الثابت HIGHEST_PROTOCOL.

*

معامل اختياري، وهو عدد صحيح يخبر المُسَلسِل بأن يستخدم البروتوكول المعطى. البروتوكولات المدعومة هي من 0 إلى قيمة الثابت HIGHEST_PROTOCOL. وفي حال عدم تحديد قيمة هذا المعامل تكون القيمة الافتراضية هي قيمة الثابت DEFAULT_PROTOCOL، أما في حال تقديم رقم سالب فإنّ الدالة ستختار قيمة الثابت HIGHEST_PROTOCOL.

fix_imports

إن أخذ هذا المعامل القيمة True وكانت قيمة المعامل protocol أقل من 3، فإنّ وحدة pickle ستحاول ربط الأسماء الجديدة في الإصدار 3 من بايثون بأسماء الوحدات القديمة المستخدمة في الإصدار 2 من بايثون، بحيث يكون تدفق البيانات مقروءًا في الإصدار 2 من بايثون.

توابع الصنف Pickler

التابع dump()‎

يكتب التابع تمثيلًا مُسلسَلًا للكائن المُعطى في كائن الملف المفتوح والمحدّد في الدالة البانية للصنف.

التابع persistent_id()

لا يؤدي هذا التابع افتراضيًا أي وظيفة، والهدف من وجوده هو إمكانية إعادة تعريفه override بواسطة صنف فرعي.

خصائص الصنف Pickler

dispatch_table

جدول الإرسال dispatch table الخاص بكائنات pickler هو سجلّ لدوال الاختزال reduction functions التي تكون من النوع الذي يمكن التصريح عنه بواسطة الدالة copyreg.pickle()‎. هذا الجدول هو كائن ربط mapping تكون مفاتيحه أصنافًا وقيمه دوال اختزال. تأخذ دالة الاختزال معاملًا واحدًا من معاملات الصنف المرتبط بها، ويجب أن تكون واجهتها مطابقة لواجهة التابع ‎__reduce__()‎.

لا يمتلك كائن pickler افتراضيًا الخاصية dispatch_table، وسيستخدم عوضًا عنها جدول الإرسال الذي تتحكم به وحدة copyreg. ولكن يمكن تخصيص عملية السلسلة لكائن pickler معيّن عن طريق جعل خاصية dispatch_table تتصرّف ككائن شبيه بالقواميس. أما إن امتلك الصنف المتفرّع من الصنف Pickler خاصية dispatch_table فإنّها ستستخدم حينئذٍ كجدول إرسال افتراضي لنسخ ذلك الصنف.

راجع قسم جداول الإرسال في وحدة pickle للاطلاع على الأمثلة.

ملاحظة: هذه الخاصية جديدة في الإصدار 3.3 من بايثون.

fast

هذه الخاصية مهملة. تفعّل هذه الخاصية النمط السريع fast mode إن أخذت القيمة True. يعطّل النمط السريع استخدام المذكرة memo، الأمر الذي يساهم في تسريع عملية السلسلة وذلك بعدم إنتاج شيفرة عمليات PUT فائضة عن الحاجة. يجب عدم استخدام هذه الخاصية مع الكائنات التي تمتلك إشارت إلى نفسها، لأنّ ذلك سيدخل كائن Pickler حلقة لا نهائية.

يمكنك استخدام الدالة pickletools.optimize()‎ إن كنت بحاجة إلى عمليات سلسلة مضغوطة ولا تستهلك مساحة كبيرة.

انظر أيضًا

  • الصنف Unpickler : يستخدم هذا الصنف ملفًّا ثنائيًا يقرأ منه تدفق البيانات المسلسلة.

مصادر