-
مقدمة: قصة المتغير “المحلي” و”العالمي” تخيل أن لديك “مفتاحاً” لبيتك (هذا نطاق خاص بك فقط)، ولدينا “مفتاح” لبوابة الحديقة العامة (هذا نطاق عام للجميع). في البرمجة، ليس كل متغير متاحاً في كل مكان. النطاق (Scope) هو المنطقة من الكود التي يكون فيها المتغير “مرئياً” ومعروفاً.
-
أنواع النطاقات في بايثون (بكل بساطة): أ. المتغير المحلي (Local Scope): هو المتغير الذي يتم تعريفه داخل دالة. هذا المتغير “يولد” عند استدعاء الدالة و”يموت” فور انتهائها. لا يمكن لأي كود خارج الدالة أن يراه.
-
🙁 )def my_house
أريكة” # متغير محلي”=furniture
print(furniture)() my_house
خطأ! لأن الأريكة داخل البيت فقط هنا سيحدث<–.print(furniture)#
ب. المتغير العالمي (Global Scope): هو المتغير الذي يتم تعريفه في جسم البرنامج الرئيسي (خارج أي دالة). هذا المتغير متاح للجميع، ويمكن لأي دالة أن تراه وتقرأ قيمته.
“أكاديمية قياوي” # متغير عالمي=academy_name
:() def welcome
الدالة تستطيع رؤيته # (” {academy _ name}مرحبا في “print(f
3. قاعدة LEGB (كيف يبحث بايثون عن المتغير؟) عندما تطلب من بايثون متغيراً، فإنه يبحث عنه بالترتيب التالي:
1 Local: يبحث داخل الدالة أولاً.
2 Enclosing: يبحث في الدوال المحيطة (في حالة الدوال المتداخلة).
3 Global: يبحث في الملف الرئيسي.
4 Built-in: يبحث في كلمات بايثون المحجوزة.
- الكلمة السحرية global
- ماذا لو أردت “تغيير” قيمة متغير عالمي من داخل الدالة؟ بايثون سيمنعك إلا إذا استخدمت كلمة global.
Python
count = 0
: ()def increase
نخبر بايثون أننا نقصد # global count
المتغير الخارجي
count += 1
( ) increase
# ستطبع 1 print(count)
5. نصيحة للمطور المتميز في أكاديمية قياوي: “حاول دائماً تقليل استخدام المتغيرات العالمية (Global). المبرمج المحترف يفضل المتغيرات المحلية لأنها تجعل الكود أكثر أماناً وأقل عرضة للأخطاء غير المتوقعة.”
تحدي الدرس الحادي عشر: قم بإنشاء دالة تحتوي على متغير محلي باسم secret وحاول طباعته خارج الدالة. ماذا لاحظت؟ ثم حاول استخدام كلمة global لجعل هذا المتغير متاحاً في الخارج.