"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيف يمكن أن تساعد تصريحات إعادة التوجيه في منع أخطاء الاسم للوظائف المحددة لاحقًا في بايثون؟

كيف يمكن أن تساعد تصريحات إعادة التوجيه في منع أخطاء الاسم للوظائف المحددة لاحقًا في بايثون؟

تم النشر بتاريخ 2024-11-09
تصفح:404

How Can Forward Declarations Help Prevent NameErrors for Functions Defined Later in Python?

إعادة توجيه التصريحات في بايثون لمنع أخطاء الاسم للوظائف المحددة لاحقًا

في بايثون، يمكن أن تؤدي محاولة استدعاء دالة قبل تعريفها في خطأ في الاسم على الرغم من أن إعادة تنظيم التعليمات البرمجية قد تبدو الحل الوحيد، إلا أن هناك طرقًا بديلة.

تتمثل إحدى الطرق في إعادة توجيه دالة عن طريق تغليف استدعاءها داخل وظيفة منفصلة. يسمح هذا باستدعاء الدالة قبل تعريفها دون تشغيل خطأ في الاسم.

على سبيل المثال، ستفشل التعليمات البرمجية التالية:

print("\n".join([str(bla) for bla in sorted(mylist, cmp = cmp_configs)]))

لأن وظيفة cmp_configs لم يتم تعريفها بعد. للإعلان عن ذلك، يمكننا تغليف الاستدعاء:

def forward_declare_cmp_configs():
    print("\n".join([str(bla) for bla in sorted(mylist, cmp = cmp_configs)]))

forward_declare_cmp_configs()

def cmp_configs():
    ...

الآن، يمكن استدعاء الدالة Forward_declare_cmp_configs() قبل تعريف cmp_configs()، وسيتم تنفيذ التعليمات البرمجية الأصلية دون أخطاء.

هناك سيناريو آخر حيث يكون الإعلان الأمامي مفيدًا في وظائف العودية. على سبيل المثال، قد تفشل التعليمات البرمجية التالية:

def spam():
    if end_condition():
        return end_result()
    else:
        return eggs()

def eggs():
    if end_condition():
        return end_result()
    else:
        return spam()

لإعادة توجيه المكالمات المتكررة، يمكننا استخدام نهج دالة متداخلة:

def spam_outer():
    def spam_inner():
        if end_condition():
            return end_result()
        else:
            return eggs()

    def eggs():
        if end_condition():
            return end_result()
        else:
            return spam_inner()

    return spam_inner()

spam_outer()()

تذكر، على الرغم من أن التصريحات الأمامية يمكن أن تكون مفيدة، إلا أن القاعدة العامة في بايثون هي تحديد دالة قبل استخدامها لأول مرة.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3