Python/linecache/lazycache

من موسوعة حسوب
مراجعة 09:27، 24 أغسطس 2018 بواسطة مصطفى-عطا (نقاش | مساهمات) (←‏المعاملات)
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)

التابع linecache.lazycache

يحصل هذا التابع على المعلومات الكافية عن وحدة غير معتمدة على الملف" non-file-based" بحيث تكون جاهزة لقراءة أسطرها لاحقًا باستخدام التابع getline حتى لو كان المعامل module_globals غير مُسند ضمن معاملات getline، مما يسمح بتجنب عمليات الكتابة والقراءة إلى حين وجود حاجة حقيقية دون الحاجة إلى الاحتفاظ بالمعامل module_globals ضمن الشيفرة البرمجية.

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

linecache.lazycache(filename, module_globals)

المعاملات

المعامل filename

اسم الملف المُراد وضعه بالكاش بطريقة كسولة.

المعامل module_globals

قاموس (dict) يحتوي على مفتاحين __name__ و __loader__ يُستخدمان ضمن التابع لتحميل المعلومات الأساسية للملف.

القيمة المعادة

يعيد التابع قيمة منطقية True إن كان الملف موجودًا سلفًا في الكاش بطريقة كسولة أو عند النجاح بفتحه بهذه الطريقة في حال عدم وجوده.

ويعيد False إن كان الملف موجودًا في الكاش بالكامل، أو في حال الفشل بفتحه بطريقة كسولة أو حدوث مشكلة أخرى.

أمثلة

يبين المثال التالي طريقة استخدام التابع:

>>> import linecache

>>> linecache.lazycache('D:\\test.txt',globals())
True

>>> linecache.cache
{'D:\\test.txt': (functools.partial(<bound method BuiltinImporter.get_source of <class '_frozen_importlib.BuiltinImporter'>>, '__main__'),)}

>>> linecache.getline('D:\\test.txt',1)
'Hello World\n'

>>> linecache.cache
{'D:\\test.txt': (25, 1535099138.4333844, ['Hello World\n', 'How are you!\n'], 'D:\\test.txt')}

انظر أيضًا

التابع المضمن open.

التابع linecache.getlineلقراءة سطر من الملف ووضع محتوياته في الكاش.

مصادر

صفحة التوثيق الرسمي للمكتبة linecache