نميز مشاركة المرجع من العودة إلى الذات. [1] [2]
الخلاصة السريعة
المثال
import pprint as p
x=['bud']; y=[x,x]
print(p.isrecursive(y),
p.isreadable(y))
x.append(x)
print(p.isrecursive(y),
p.isreadable(y))لماذا لا يكفي تكرار المرجع؟
المصدر هنا يتتبع الحاويات على مسار التمثيل الحالي، ويحذف مرجع الحاوية بعد إنهاء عناصرها. لذلك لا تبقى القائمة المشتركة من المسار الأول كدورة في المسار الثاني. [1] [2]

ما الذي تغير؟
بعد x.append(x) يعود المسار إلى قائمة ما زالت قيد التمثيل. isrecursive يكشف الدورة وisreadable يعيد False. تغيير البيانات مقصود في المثال؛ الفحص نفسه لا يزيل الدورة. لا نعمم الحماية على كائنات مخصصة أو نختبر تنفيذ التمثيل. [1] [2]
المراجع
- Python 3.12: pprint recursion
- CPython 3.12.14: pprint.py
- موضوع تك: لغة بايثون — مفردات
- موضوع تك: تطبيقات بايثون — مفردات
أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.
