• 0

كيف أتحقّق من أن متغيرًا ما في بايثون هو دالة؟

لنفترض أن لدي المتغير x وأريد معرفة هل هذا المتغير يشير إلى دالة أو لا، حاولت استخدام تابع isinstance لكن لم ينجح الأمر، فما هي الطريقة الصحيحة لمعرفة دالة معينة في البايثون؟

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

كالعادة في البايثون توجد العديد من الطرق للقيام بنفس الوظيفة، بعضها صعب والآخر أسهل، وأبسط طريقة للتأكد من أن الكائن من نوع دالة هي عن طريق التأكد من أن هذا الكائن لديه سمة __call__ عن طريق استخدام التابع hasattr ومن ثم تمرير الكائن:

hasattr(obj, '__call__')

ويمكنك أيضا استخدام وحدة types للتأكد من أن الكائن هو دالة عن طريق استخدام التابع FunctionType مع isinstance كما يظهر في الأمثلة التالي:

In [1]: import types
In [2]: types.FunctionType
Out[2]: <type 'function'>
In [3]: def f(): pass
   ...:
In [4]: isinstance(f, types.FunctionType)
Out[4]: True
In [5]: isinstance(lambda x : None, types.FunctionType)
Out[5]: True

لاحظ أن lambda تعتبر أيضا دالة.
المصدر

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن