• 0

كيف أحصل على الشيفرة المصدرية لدالة في بايثون؟

هل هنالك طريقة برمجية للحصول على الشيفرة البرمجية لدالة معينة في بايثون؟ أي أريد الحصول على الشيفرة البرمجية كما كُتبت من داخل البرنامج ومن دون النظر إلى ملفاته.

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


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

للحصول على الشيفرة البرمجية لدالة مكتوبة بلغة بايثون يمكنك استخدام دالة getsourcelines من وحدة inspect حيث أنها ستُرجع لك الشيفرة البرمجية على شكل سلسلة نصية واحدة بعد أن تمرر لها اسم الدالة المطلوبة.
ملاحظة: حسب علمي إذا كانت الدالة قد تم تجميعها (compiled) من سلسلة نصية أو تم استدعاؤها من ملف تم تجميعه فإنك لن تستطيع الحصول على شيفرتها البرمجية.
عندما تكون الشيفرة البرمجية غير موجودة يمكنك استخدام دالة dis من مكتبة dis للحصول على بعض معلومات هذه الدالة كالتالي:

>>> import dis
>>> def foo(arg1,arg2):
...     #do something with args
...     a = arg1 + arg2
...     return a
...
>>> dis.dis(foo)
  3           0 LOAD_FAST                0 (arg1)
              3 LOAD_FAST                1 (arg2)
              6 BINARY_ADD
              7 STORE_FAST               2 (a)

  4          10 LOAD_FAST                2 (a)
             13 RETURN_VALUE

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


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

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

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

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


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

تسجيل الدخول

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


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