في CPython 3.12.14، قد ترفع done خطأً بعد معالجة عقدة سابقة في النداء؛ الأثر يبقى في مثالنا. [1] [2]
الخلاصة السريعة
لا في المثال؛ الخطأ لا يمحو الأثر السابق. [1] [2]
- في CPython 3.12.14، قد ترفع done خطأً بعد معالجة عقدة سابقة في النداء؛ الأثر يبقى في مثالنا. [1] [2]
- leaf تعتمد على root. نستلم root قبل النداء؛ missing لم نضفها للرسم. [1] [2]
- done("root","missing") ترفع ValueError، لكن get_ready التالية تعيد ("leaf",)؛ سُجلت معالجة root قبل الخطأ. [1] [2]
- التنفيذ يتحقق ويعالج كل عقدة قبل الانتقال للتالية؛ ليس فحصًا كاملًا لجميع الوسائط قبل التغيير هنا. [1] [2]
- تحكم مستقل: عكس الوسيطين يرفع ValueError ويترك الجاهز (). بعدها done("root") تحرر leaf. نختبر حالة المرتب، دون تنفيذ مهام. [1] [2]
الأثر والإصدار
في CPython 3.12.14، قد ترفع done خطأً بعد معالجة عقدة سابقة في النداء؛ الأثر يبقى في مثالنا. [1] [2]
العقد والتهيئة
leaf تعتمد على root. نستلم root قبل النداء؛ missing لم نضفها للرسم. [1] [2]
صحيح ثم مفقود
done("root","missing") ترفع ValueError، لكن get_ready التالية تعيد ("leaf",)؛ سُجلت معالجة root قبل الخطأ. [1] [2]
from graphlib import TopologicalSorter def make(): t=TopologicalSorter({"leaf":{"root"},"root":set()}) t.prepare();t.get_ready();return t own=make() try:own.done("root","missing") except ValueError:print("ValueError") print(own.get_ready()) [1] [2]

المعالجة والتحكم المعكوس
التنفيذ يتحقق ويعالج كل عقدة قبل الانتقال للتالية؛ ليس فحصًا كاملًا لجميع الوسائط قبل التغيير هنا. [1] [2]
control=make() try:control.done("missing","root") except ValueError:print("ValueError") print(control.get_ready()) control.done("root") print(control.get_ready()) [1] [2]
تحكم مستقل: عكس الوسيطين يرفع ValueError ويترك الجاهز (). بعدها done("root") تحرر leaf. نختبر حالة المرتب، دون تنفيذ مهام. [1] [2]
المراجع
للتوسع: لغات البرمجة.
أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.
