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

كيفية الوصول إلى المتغيرات غير المحلية من الوظائف المتداخلة في بايثون؟

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

How to Access Nonlocal Variables from Nested Functions in Python?

الوصول إلى المتغيرات غير المحلية في نطاقات الوظائف المتداخلة

في بايثون، توفر نطاقات الوظائف المتداخلة الوصول إلى النطاقات المضمنة. ومع ذلك، فإن محاولة تعديل متغير في نطاق مرفق داخل دالة متداخلة يمكن أن يؤدي إلى خطأ UnboundLocalError.

لمعالجة هذه المشكلة، لديك عدة خيارات:

1. استخدام الكلمة الأساسية "غير المحلية" (Python 3 ):

بالنسبة إلى Python 3 وما بعده، تسمح لك الكلمة الأساسية غير المحلية بإعادة ربط المتغيرات غير المحلية داخل الوظائف المتداخلة.

def outer():
    ctr = 0

    def inner():
        nonlocal ctr
        ctr  = 1

    inner()

2. الوصول غير المباشر عبر القوائم (بايثون 2 و3):

في كل من بايثون 2 و3، يمكنك استخدام قائمة للاحتفاظ بالمتغير وزيادته بشكل غير مباشر داخل الوظيفة المتداخلة.

ctr = [0]

def inner():
    ctr[0]  = 1

3. استخدام المتغيرات العامة (غير مستحسن):

على الرغم من أن استخدام المتغيرات العامة يمكن أن يسمح بالوصول إلى المتغيرات من النطاقات المتضمنة، إلا أنه لا يُنصح به بشكل عام بسبب التعارضات المحتملة ومشكلات إمكانية قراءة التعليمات البرمجية.

def outer():
    global ctr
    ctr = 0

    def inner():
        ctr  = 1

يعتمد اختيار الحل المناسب على إصدار Python المحدد الخاص بك واعتبارات التصميم الخاصة بكودك.

بيان الافراج يتم استنساخ هذه المقالة في: 1729507041 إذا كان هناك أي انتهاك ، فيرجى الاتصال بـ [email protected] لحذفه.
أحدث البرنامج التعليمي أكثر>

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

Copyright© 2022 湘ICP备2022001581号-3