## نطاق المتغيرات (Scope)
يحدد **أين يمكن الوصول** إلى متغير معين.
### LEGB Rule - الترتيب في Python: - **L**ocal: داخل الدالة الحالية - **E**nclosing: الدالة الخارجية (في الدوال المتداخلة) - **G**lobal: على مستوى الملف - **B**uilt-in: المدمجة في Python مثل `print`، `len`
### Local Scope: متغير يُعرَّف داخل دالة - لا يمكن الوصول إليه من الخارج
### Global Scope: متغير يُعرَّف خارج الدوال - يمكن قراءته من الدوال
### global keyword: لتعديل متغير global من داخل دالة
| 1 | # Global variable |
| 2 | count = 0 |
| 3 | |
| 4 | def increment(): |
| 5 | global count # ضروري لتعديل المتغير العام |
| 6 | count += 1 |
| 7 | |
| 8 | increment() |
| 9 | increment() |
| 10 | print(count) # 2 |
| 11 | |
| 12 | # Local variable |
| 13 | def my_func(): |
| 14 | local_var = "محلي" |
| 15 | print(local_var) |
| 16 | |
| 17 | my_func() |
| 18 | # print(local_var) # ❌ خطأ! خارج نطاقها |
مثال 1: Local vs Global
| 1 | name = "عالمي" # global |
| 2 | |
| 3 | def show_name(): |
| 4 | name = "محلي" # local - يخفي العالمي |
| 5 | print("داخل الدالة:", name) |
| 6 | |
| 7 | show_name() |
| 8 | print("خارج الدالة:", name) # العالمي لم يتغير |
مثال 2: global keyword
| 1 | total = 0 |
| 2 | |
| 3 | def add_to_total(value): |
| 4 | global total # إشارة للمتغير العالمي |
| 5 | total += value |
| 6 | |
| 7 | add_to_total(10) |
| 8 | add_to_total(25) |
| 9 | add_to_total(15) |
| 10 | print("الإجمالي:", total) # 50 |