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