📚 المتغيرات المحلية والعامة
المفاهيم الأساسية
نطاق المتغير: جزء المقطع البرمجي الذي يُمكن الوصول إلى المتغير واستخدامه.
المتغيرات المحلية (Local Variables): متغيرات نطاقها داخل الدالة حيث تم التصريح عنها، تبدأ من تعريف اسم الدالة، وتنتهي عند توقف الدالة عن التنفيذ.
المتغيرات العامة (Global Variables): متغيرات تُصرَّح عنها في المستوى الأعلى من جزء المقطع البرمجي (ليس ضمن نطاق معين مثل الدوال)، ويتم تعريفها باستخدام الكلمة `global`.
خريطة المفاهيم
```markmap
الدوال في بايثون
تعريف الدالة
الكلمة الأساسية `def`
اسم الدالة
النقطتان `:`
محتوى الدالة (Function Body)
#### المعاملات (Parameters)
##### تُحدد داخل الأقواس `()`
##### مفصولة بفاصلة
##### متغيرات محلية (Local Variables)
###### نطاق المتغير المحلي
####### داخل الدالة فقط
####### لا تؤثر في المتغيرات العامة بنفس الاسم
####### تبدأ وتنتهي مع تنفيذ الدالة
##### الوسائط الافتراضية (Default Arguments)
###### الغرض
####### جعل بعض المعاملات اختيارية
####### استخدام قيم افتراضية إذا لم يتم تمرير قيمة
###### طريقة التعيين
####### وضع عامل الإحالة `=` متبوعًا بالقيمة الافتراضية بعد تسمية المعاملات
####### مثال: `def helloFunction(message="مرحباً"):`
###### طريقة الاستخدام
####### استدعاء الدالة بدون وسائط: تُستخدم القيمة الافتراضية
####### استدعاء الدالة بقيمة مختلفة: يتم تجاوز القيمة الافتراضية
#### عبارة الإرجاع `return`
##### الغرض
###### إنهاء تنفيذ الدالة
###### إرجاع قيمة التعبير
##### قواعد الاستخدام
###### لا يمكن استخدامها خارج الدالة
###### في حال عدم إضافتها، لا تعيد الدالة أي شيء
##### الفرق بين `return` و `print`
###### `return`: يعطي قيمة أو ردًا لمستخدم الدالة
###### `print`: ينتج نصًا مطبوعًا على الشاشة
استدعاء الدالة
استخدام اسم الدالة متبوعًا بأقواس `()`
تمرير الوسائط (Arguments)
#### قيم تُمرر للمعاملات عند الاستدعاء
الميزة الرئيسية
إمكانية الاستدعاء مرارًا وتكرارًا
المتغيرات العامة (Global Variables)
نطاقها
#### في المستوى الأعلى من المقطع البرمجي
طريقة التصريح
#### استخدام الكلمة `global`
الغرض
#### تعيين قيمة لاسم محدد في المستوى الأعلى من جزء المقطع البرمجي
دوال جاهزة في بايثون
`print()`
`len()`
`range()`
`input()`
```
نقاط مهمة
- المتغيرات المحلية داخل تعريف الدالة لا تؤثر ولا تتأثر بالمتغيرات الأخرى التي تحمل نفس الاسم خارج الدالة.
- لتعديل متغير عام من داخل دالة، يجب استخدام الكلمة `global` للإعلان عنه داخل الدالة.
- مثال الكود يوضح أن تغيير قيمة `x` داخل الدالة `func(x)` (إلى 2) لم يؤثر على قيمة `x` العامة (التي بقيت 50).