كيفية تحديد ما إذا كان المتغير يمثل دالة في بايثون
في بايثون، قد يكون من المفيد التحقق مما إذا كان المتغير يشير إلى دالة وظيفة. في البداية، يمكن للمرء أن يفكر في استخدام isinstance(x, function)، ولكن بايثون تثير خطأ في الاسم لفئة دالة غير محددة. المتغير عبارة عن دالة، وتقدم Python إمكانية الاتصال به (). بالنسبة إلى Python 2.x وPython 3.2، توفر هذه الطريقة وظيفة التحقق من الكائنات القابلة للاستدعاء. بدلاً من ذلك، بالنسبة لـ Python 3.x قبل 3.2، يمكن للمرء استخدام hasattr(obj, '__call__') لفحص ما إذا كان الكائن يمتلك خاصية __call__ المميزة للكائنات القابلة للاستدعاء.
تحذيرات مع الأنواع.FunctionType وinspect.isfunction
بينما تم اقتراح الأساليب التي تستخدم أنواع.FunctionTypes أو Inspector.isfunction، إلا أن هذه الطرق لها قيود. يقومون بإرجاع False للوظائف غير Python. تفشل الوظائف المضمنة، التي تم تنفيذها في لغة C، في هذا الفحص، على الرغم من أنها قابلة للاستدعاء:
>>> isinstance(open, Types.FunctionType) خطأ شنيع >>> قابل للاستدعاء (مفتوح) صحيح
لذلك، التحقق من الطبيعة القابلة للاستدعاء للكائن يجب أن يتضمن التحقق بشكل صريح من إمكانية استدعائه، وليس توافقه مع تعريف فئة معينة.تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3