الفرق بين المراجعتين لصفحة: «Python/marshal»
لا ملخص تعديل |
لا ملخص تعديل |
||
سطر 1: | سطر 1: | ||
<noinclude>{{DISPLAYTITLE:الوحدة <code>marshal</code> في بايثون}}</noinclude> | |||
تضمّ هذه الوحدة مجموعة من الدوال التي يمكنها قراءة وكتابة قيم بايثون بالصيغة الثنائية binary format. هذه الصيغة خاصة ببايثون، ولكنّها مستقلّة عن معمارية الجهاز الذي تعمل عليه الشيفرة (مثلًا، يمكنك كتابة قيمة بايثون في ملف على نظام ويندوز، ثم نقل الملف إلى حاسوب Sun وقراءته فيه). | تضمّ هذه الوحدة مجموعة من الدوال التي يمكنها قراءة وكتابة قيم بايثون بالصيغة الثنائية binary format. هذه الصيغة خاصة ببايثون، ولكنّها مستقلّة عن معمارية الجهاز الذي تعمل عليه الشيفرة (مثلًا، يمكنك كتابة قيمة بايثون في ملف على نظام ويندوز، ثم نقل الملف إلى حاسوب Sun وقراءته فيه). | ||
مراجعة 21:16، 15 سبتمبر 2018
تضمّ هذه الوحدة مجموعة من الدوال التي يمكنها قراءة وكتابة قيم بايثون بالصيغة الثنائية binary format. هذه الصيغة خاصة ببايثون، ولكنّها مستقلّة عن معمارية الجهاز الذي تعمل عليه الشيفرة (مثلًا، يمكنك كتابة قيمة بايثون في ملف على نظام ويندوز، ثم نقل الملف إلى حاسوب Sun وقراءته فيه).
لم يجر توثيق التفاصيل الخاصّة بهذه الصيغة عمدًا، وذلك لأنّها عرضة للتغيير بين إصدارات بايثون المختلفة (بالرغم من أن ذلك نادر الحدوث).
تأثّر اسم هذه الوحدة تأثّرًا كبيرًا بالتسمية التي اعتمدها مصمّمو لغة Modula-3 لهذه العملية، إذ يستخدم هؤلاء المصطلح "marshalling" للتعبير عن عملية نقل البيانات بهيئة ذاتية الاحتواء. لو أخذنا المعنى الدقيق للكلمة فإنّ الفعل "to marshal" يعني تحويل نوع معين من البيانات من الصيغة الداخلية إلى الخارجية (في ذاكرة RPC على سبيل المثال)، أما مصطلح "unmarshalling" فيشير إلى عكس هذه العملية.
هذه الوحدة ليست وحدة "مستمّرة" عامة. راجع الوحدتين pickle
و shelve
للاطلاع على استمرارية كائنات بايثون ونقلها عن طريق الاستدعاءات الإجرائية البعيدة RPC.
إنّ الهدف الرئيس من وحدة marshal
هو السماح لوحدات بايثون بقراءة الشيفرة شبه المصرّفة وكتابتها في الملفات ذات الامتداد .pyc
. وهكذا يحتفظ المطوّر بلغة بايثون الحق في تعديل صيغة الترتيب بطريقة لا تتوافق مع الإصدارات السابقة من اللغة وحسب ما تقتضيه الحاجة. إن كنت تريد سَلسَلة كائنات بايثون وإلغاء سلسلتها، فعليك باستخدام الوحدة pickle
التي تقدّم أداءً مقاربًا لأداء وحدة marshal
، وهي مستقلّة عن إصدارات بايثون، وتدعم نطاقًا أوسع من كائنات بايثون مقارنة بوحدة marshal
.
تحذير:
إنّ وحدة marshal
غير معدّة لتكون آمنة تجاه البيانات الخطيرة أو التي تحتوي على الأخطاء. لا تلغِ ترتيب أي بيانات من مصادر غير موثوقة أو معرّفة.
لا تدعم وحدة marshal
جميع كائنات بايثون. تدعم هذه الوحدة -عامّةَ- الكائنات التي تكون مستقلة عن نوع معيّن من الاستدعاءات في بايثون.
تدعم هذه الوحدة الأنواع التالية:
- القيم البوليانية
booleans
- الأعداد الصحيحة
- الأعداد العشرية ذات الفاصلة العائمة
- الأعداد المركبة
- السلاسل النصية
- البايتات
- مصفوفات البايتات
- القوائم
- المجموعات
- المجموعات المجمدة
- القواميس
- كائنات code
يجب الانتباه إلى أنّ الصفوف والقوائم والمجموعات والمجموعات المجمّدة والقواميس مدعومة بشرط أن تحتوي على قيم قابلة للترتيب بحد ذاتها.
يمكن ترتيب وإلغاء ترتيب الأنواع المنفردة وهي None
والنقاط الثلاثة Ellipsis
و StopIteration
.
لا يمكن كتابة القوائم التعاودية والمجموعات والقواميس في الإصدارات الأدنى من الإصدار 3 (انظر أدناه).
تقدّم الدالة بعض الدوال التي تقرأ وتكتب الملفات إلى جانب دوالّ أخرى تعمل على الكائنات الشبيهة بالبايتات.
دوال الوحدة marshal
تعرّف الوحدة الدوال التالية:
ثوابت الوحدة marshal
تعرّف الدالة الثوابت التالية:
الثابت marshal.version
يحدّد هذا الثابت التنسيق الذي تستخدمه الوحدة. الإصدار 0 هو الإصدار الأقدم، أما الإصدار 1 فيشارك السلاسل النصية المقيّدة interned strings ويستخدم الإصدار 2 تنسيقًا ثنائيًا للتعامل مع الأرقام العشرية ذات الفاصلة العائمة. أضاف الإصدار الثالث الدعم لنسخ الكائنات والتعاودية. أما الإصدار الحالية فهو الإصدار 4.