سؤال

كنت أبحث في التعليمات البرمجية المصدرية إلى وظيفة Hasattr المدمجة ولاحظت بضع خطوط تثير اهتمامي:

Py_INCREF(Py_False);
return Py_False;

...

Py_INCREF(Py_True);
return Py_True;

غير Py_False و Py_True القيم العالمية؟ فقط من الفضول المحض، لماذا يبرثون الحفاظ على عدد مرجعي لهذه المتغيرات؟

هل كانت مفيدة؟

المحلول

انها لجعل كل موحدة معالجة الكائنات. إذا كنت أكتب رمز C الذي يتعامل مع قيمة الإرجاع من وظيفة، لا بد لي من زيادة وتناقص عدد المرجع على هذا الكائن. إذا عودتني الوظيفة لي صحيحا، فأنا لا أريد أن أتحقق من معرفة ما إذا كانت واحدة من تلك الأشياء الخاصة لمعرفة معرفة ما إذا كنت تريد التعامل مع عدد المراجع. يمكنني علاج جميع الكائنات بشكل متطابق.

عن طريق علاج TRUE و FALSE (وليس None، BTW) نفس كافة الكائنات الأخرى، رمز C أبسط بكثير طوال الوقت.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top