لماذا يحتفظ بيثون بعدد مرجعي على خطأ وصحيح؟
-
12-09-2019 - |
سؤال
كنت أبحث في التعليمات البرمجية المصدرية إلى وظيفة 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 أبسط بكثير طوال الوقت.
لا تنتمي إلى StackOverflow