الفرق بين المراجعتين ل"Python/shelve/open"

من موسوعة حسوب
< Python‏ | shelve
اذهب إلى التنقل اذهب إلى البحث
(أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE:الدالة <code>shelve.open()‎</code> في بايثون}}</noinclude> تفتح الدالة قاموسًا مستمرًّا. == البن...')
 
 
(مراجعة متوسطة واحدة بواسطة نفس المستخدم غير معروضة)
سطر 8: سطر 8:
 
shelve.open(filename, flag='c', protocol=None, writeback=False)
 
shelve.open(filename, flag='c', protocol=None, writeback=False)
 
</syntaxhighlight>
 
</syntaxhighlight>
+
 
== المعاملات ==
+
== ‎المعاملات ==
  
 
=== <code>filename</code> ===
 
=== <code>filename</code> ===
سطر 15: سطر 15:
  
 
=== <code>flag</code> ===
 
=== <code>flag</code> ===
معامل اختياري وهو مشابه للمعامل flag في الدالة dbm.open()‎.
+
معامل اختياري وهو مشابه للمعامل <code>flag</code> في الدالة <code>dbm.open()‎</code>.
  
 
=== <code>protocol</code> ===
 
=== <code>protocol</code> ===
تستخدم الوحدة افتراضيًا الإصدار 3 من pickle لسلسلة القيم، ويمكن تحديد إصدار بروتوكول السَلسَلة باستخدام المعامل protocol.
+
تستخدم الوحدة افتراضيًا الإصدار 3 من <code>pickle</code> لسلسلة القيم، ويمكن تحديد إصدار بروتوكول السَلسَلة باستخدام المعامل <code>protocol</code>.
  
 
=== <code>writeback</code> ===
 
=== <code>writeback</code> ===
لا يستطيع الرفّ -بسبب طبيعة لغة بايثون- معرفة اللحظة التي تجرى فيها التعديلات على قاموس مستمرّ قابل للتعديل. تُكتب الكائنات المعدّلة افتراضيًا عند إسنادها إلى الرفّ فقط (راجع المثال). إن أخذ المعامل الاختياري writeback القيمة True، فإنّ جميع المدخلات التي تم الوصول إليها ستُخزن في الذاكرة المخبئية، ويعاد كتابتها عند استدعاء التابعين sync()‎ و close()‎. يسهّل هذا الأمر عملية تعديل المدخلات القابلة للتعديل mutable في القاموس المستمر، ولكن في حال الوصول إلى عدد كبير من العناصر سيكون مقدار الذاكرة المستهلكة كبيرًا جدًّا الأمر الذي قد يؤدي إلى جعل عملية الإغلاق بطيئة للغاية وذلك لأنّ جميع العناصر التي تم الوصول إليها سيعاد كتابتها (لا توجد طريقة لتمييز العناصر القابلة للكتابة من بين العناصر التي يتم الوصول إليها، ولا توجد طريقة لتمييز العناصر المعدّلة أصلًا).  
+
لا يستطيع الرفّ -بسبب طبيعة لغة بايثون- معرفة اللحظة التي تجرى فيها التعديلات على قاموس مستمرّ قابل للتعديل. تُكتب الكائنات المعدّلة افتراضيًا عند إسنادها إلى الرفّ فقط ([[Python/shelve#.D8.A3.D9.85.D8.AB.D9.84.D8.A9|راجع المثال في وحدة <code>shelve</code>]]). إن أخذ المعامل الاختياري <code>writeback</code> القيمة <code>True</code>، فإنّ جميع المدخلات التي تم الوصول إليها ستُخزن في الذاكرة المخبئية، ويعاد كتابتها عند استدعاء التابعين <code>sync()‎</code> و <code>close()</code>‎. يسهّل هذا الأمر عملية تعديل المدخلات القابلة للتعديل mutable في القاموس المستمر، ولكن في حال الوصول إلى عدد كبير من العناصر سيكون مقدار الذاكرة المستهلكة كبيرًا جدًّا الأمر الذي قد يؤدي إلى جعل عملية الإغلاق بطيئة للغاية وذلك لأنّ جميع العناصر التي تم الوصول إليها سيعاد كتابتها (لا توجد طريقة لتمييز العناصر القابلة للكتابة من بين العناصر التي يتم الوصول إليها، ولا توجد طريقة لتمييز العناصر المعدّلة أصلًا).  
  
ملاحظة:
+
'''ملاحظة:'''
لا تتوقع أن يُغلق الرفّ تلقائيًا بل استدعِ الدالة close()‎ دائمًا عندما لا تحتاج إلى استخدام الرف أو استخدم الدالة shelve.open()‎ كمدير للسياق:
+
 
 +
لا تتوقع أن يُغلق الرفّ تلقائيًا بل استدعِ الدالة <code>close()‎</code> دائمًا عندما لا تحتاج إلى استخدام الرف أو استخدم الدالة <code>shelve.open()</code>‎ كمدير للسياق:<syntaxhighlight lang="python3">
 
with shelve.open('spam') as db:
 
with shelve.open('spam') as db:
    db['eggs'] = 'eggs'
+
  db['eggs'] = 'eggs'
 
+
</syntaxhighlight>
 
== مصادر ==
 
== مصادر ==
 
[https://docs.python.org/3/library/shelve.html#shelve.open صفحة Python object persistence في توثيق بايثون الرسمي.]
 
[https://docs.python.org/3/library/shelve.html#shelve.open صفحة Python object persistence في توثيق بايثون الرسمي.]

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


تفتح الدالة قاموسًا مستمرًّا.

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

shelve.open(filename, flag='c', protocol=None, writeback=False)

‎المعاملات

filename

اسم الملف الأساسي لقاعدة البيانات الداخلية. يمكن إضافة امتداد إلى اسم الملف ويمكن أيضًا إنشاء ملفات متعددة. تفتح الدالة افتراضيًا ملف قاعدة البيانات الداخلي في وضعي القراءة والكتابة.

flag

معامل اختياري وهو مشابه للمعامل flag في الدالة dbm.open()‎.

protocol

تستخدم الوحدة افتراضيًا الإصدار 3 من pickle لسلسلة القيم، ويمكن تحديد إصدار بروتوكول السَلسَلة باستخدام المعامل protocol.

writeback

لا يستطيع الرفّ -بسبب طبيعة لغة بايثون- معرفة اللحظة التي تجرى فيها التعديلات على قاموس مستمرّ قابل للتعديل. تُكتب الكائنات المعدّلة افتراضيًا عند إسنادها إلى الرفّ فقط (راجع المثال في وحدة shelve). إن أخذ المعامل الاختياري writeback القيمة True، فإنّ جميع المدخلات التي تم الوصول إليها ستُخزن في الذاكرة المخبئية، ويعاد كتابتها عند استدعاء التابعين sync()‎ و close()‎. يسهّل هذا الأمر عملية تعديل المدخلات القابلة للتعديل mutable في القاموس المستمر، ولكن في حال الوصول إلى عدد كبير من العناصر سيكون مقدار الذاكرة المستهلكة كبيرًا جدًّا الأمر الذي قد يؤدي إلى جعل عملية الإغلاق بطيئة للغاية وذلك لأنّ جميع العناصر التي تم الوصول إليها سيعاد كتابتها (لا توجد طريقة لتمييز العناصر القابلة للكتابة من بين العناصر التي يتم الوصول إليها، ولا توجد طريقة لتمييز العناصر المعدّلة أصلًا).

ملاحظة:

لا تتوقع أن يُغلق الرفّ تلقائيًا بل استدعِ الدالة close()‎ دائمًا عندما لا تحتاج إلى استخدام الرف أو استخدم الدالة shelve.open()‎ كمدير للسياق:

with shelve.open('spam') as db:
   db['eggs'] = 'eggs'

مصادر

صفحة Python object persistence في توثيق بايثون الرسمي.