Ziena Darffat نشر 15 مارس 2022 أرسل تقرير نشر 15 مارس 2022 (معدل) بفرض لدي وحدة في بايوثن تحتوي دالة معينة واريد استدعاء تلك الدالة عن طريق اسمها فقط.. هل توجد طريقة لفعل ذلك؟ مثلا لو كان لدي دالة اسمها func داخل وحدة اسمها mod واريد ان استدعي هذه الدالة من خلال اسمها فقط.. كيف يمكن فعل ذلك؟ تم التعديل في 16 مارس 2022 بواسطة Wael Aljamal توضيح السؤال 1 اقتباس
0 Ali Haidar Ahmad نشر 15 مارس 2022 أرسل تقرير نشر 15 مارس 2022 يمكنك استخدام الدالة getattr، حيث تعيد الدّالة getattr() قيمة الخاصيّة المُعطاة من الكائن المُعطى، ويتم صياغتها بالشكل التالي: getattr(object, name[, default]) حيث يمثل الوسيط الأول الكائن المراد الحصول على قيمة خاصيّته. أما name فتمثل سلسلة نصيّة تُمثّل اسم الخاصيّة المرغوب الوصول إلى قيمتها. default مُعامل اختياريّ. القيمة الافتراضيّة التي ستُعاد إن لم تكن الخاصيّة موجودة. ولمزيد من التفاصيل عن هذه الدالة يمكنك الانتقال إلى هذا الرابط في موسوعة حسوب. - الآن بالنسبة لمثالك، وعلى فرض أنه لدينا الوحدة mod، والدالة func، فإننا نكتب: # استيراد الوحدة import mod # نمرر اسم الدالة كوسيط ثاني والوحدة كوسيط أول methodToCall = getattr(mod, 'func') result = methodToCall() واختصاراً يمكن كتابة: result = getattr(mod, 'func')() 2 اقتباس
0 Wael Aljamal نشر 16 مارس 2022 أرسل تقرير نشر 16 مارس 2022 إن تضمين الوحدة باستخدام import module يقوم بتحميل كامل الملف و مجال التسمية الخاصة والتي تدعى name space يمكن استخدام الأسلوب التالي لتضمين دالة محددة من ضمن وحدة باستخدام: from module import func as myfunction myfunction() مع العلم، تضمين دالة محددة من الوحدة سيقوم بنفس العمل لتضمين الوحدة كاملة (نفس حجم المصادر التي يتم تحميلهم) لا يمكن تحميل الدالة لوحدها خلف الكواليس. ومن المهم استخدام اسم مستعار للدالة لكي لا نتعرف ل collision أي يصبح لدالتين نفس الاسم لأن تضمين الدالة للفضاء العام يزيد احتمالية تشابه الاسم مع دالة أخرى. >>> from math import cos as cosine >>> cosine(0) 1.0 أو وضع _ قبل الاسم >>> from math import sin >>> sin(0) 0.0 ######### >>> from math import sin as _sin >>> _sin(0) 0.0 ######### from math import pi print(pi) ربما هذه الطريقة أكثر قابلية للقراءة، كما أن الدالة التي تم تضمينها وحدها يمكننا الوصول لها. اقتباس
السؤال
Ziena Darffat
بفرض لدي وحدة في بايوثن تحتوي دالة معينة واريد استدعاء تلك الدالة عن طريق اسمها فقط.. هل توجد طريقة لفعل ذلك؟ مثلا لو كان لدي دالة اسمها func داخل وحدة اسمها mod واريد ان استدعي هذه الدالة من خلال اسمها فقط.. كيف يمكن فعل ذلك؟
تم التعديل في بواسطة Wael Aljamalتوضيح السؤال
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.