المتغير في بايثون هو اسم نربطه بقيمة أو كائن حتى نستطيع استخدامه لاحقًا في البرنامج. لإنشاء متغير، اكتب الاسم ثم علامة الإسناد = ثم القيمة، مثل age = 25. لا تحتاج في بايثون إلى إعلان نوع المتغير مسبقًا؛ نوع القيمة يظهر وقت التشغيل.
للمبتدئ يمكن التفكير في المتغير كاسم يساعدك على الوصول إلى قيمة، لكن من الناحية الأدق في بايثون الاسم يشير إلى كائن ويمكن إعادة ربطه لاحقًا بكائن آخر. لذلك يستطيع الاسم نفسه أن يشير أولًا إلى رقم ثم إلى نص، مع أن تغيير النوع بلا سبب قد يجعل الكود أصعب في القراءة.
{alertInfo} الخلاصة السريعة: اكتبname = "Ahmed"لإنشاء اسم يشير إلى قيمة. استخدم=للإسناد، واختر أسماء واضحة مثلstudent_nameوtotal_price.
{getToc} $title={محتوى المقال}
ما هي المتغيرات في بايثون؟
المتغيرات تسمح لك بإعطاء أسماء للبيانات بدل تكرار القيم نفسها في كل مكان. مثلًا يمكن أن تمثل اسم مستخدم، عمرًا، سعرًا أو نتيجة عملية حسابية:
name = "Ahmed"
age = 25
print(name)
print(age)
الناتج:
Ahmed
25
في المثال السابق أصبح الاسم name مرتبطًا بالنص "Ahmed"، وأصبح age مرتبطًا بالعدد 25.
إذا كنت تتابع الكورس بالترتيب، فالدرس السابق هو شرح التعليقات Comments في بايثون.
كيف تنشئ متغيرًا في بايثون؟
يحدث الإسناد عندما تضع قيمة على يمين = واسمًا صالحًا على يسارها:
score = 90
city = "Aden"
علامة = هنا تعني الإسناد Assignment، وليست اختبار المساواة. لاحقًا ستتعرف على == للمقارنة عندما تصل إلى العوامل والشروط.
{alertSuccess} في بايثون لا تكتب مثلًاint ageأوstring nameقبل إنشاء المتغير. يكفي أن تسند القيمة إلى الاسم.
المتغير في بايثون اسم مرتبط بكائن، وليس صندوقًا حرفيًا
من الشائع تبسيط المتغير على أنه «صندوق يخزن قيمة»، وهذا مفيد في أول دقائق التعلم. لكن الوصف الأدق في بايثون هو أن الأسماء تشير إلى كائنات.
x = 4
print(x)
x = "Sally"
print(x)
الناتج:
4
Sally
في السطر الأول يشير x إلى عدد صحيح، ثم أُعيد إسناده ليشير إلى نص. هذا جزء من Dynamic Typing في بايثون: الاسم نفسه لا يحتاج إلى إعلان نوع ثابت مسبقًا.
كيف تعرف نوع القيمة باستخدام type()؟
يمكنك استخدام type() لمعرفة نوع الكائن المرتبط بالمتغير:
name = "Sara"
age = 20
print(type(name))
print(type(age))
الناتج:
<class 'str'>
<class 'int'>
لا تحتاج في هذا الدرس إلى حفظ جميع أنواع البيانات أو طرق التحويل بينها. يكفي الآن أن تفهم أن القيم لها أنواع مختلفة، وأن المتغير يشير إلى القيمة الحالية. تابع ترتيب كورس أساسيات بايثون للتوسع في أنواع البيانات والعوامل في الدروس التالية.
قواعد تسمية المتغيرات في بايثون
اسم المتغير في بايثون يسمى أيضًا Identifier. يجب أن يكون الاسم صالحًا حسب قواعد اللغة.
| القاعدة | مثال صحيح | مثال خاطئ |
|---|---|---|
| لا يبدأ برقم | name2 |
2name |
| لا يحتوي على مسافة | student_name |
student name |
لا تستخدم شرطة - داخل الاسم |
total_price |
total-price |
| لا تستخدم Keyword محجوزة | class_name |
class |
| حالة الأحرف مهمة | name |
Name إذا كنت تقصد المتغير الأول |
تدعم بايثون أيضًا حروف Unicode في الأسماء، لذلك يمكن تقنيًا استخدام حروف غير لاتينية. لكن في أمثلة المشاريع المشتركة يظل استخدام أسماء إنجليزية وصفية مثل student_name وtotal_price عمليًا وأسهل للمشاركة.
لماذا نستخدم snake_case لأسماء المتغيرات؟
يوصي أسلوب PEP 8 بكتابة أسماء المتغيرات والدوال غالبًا بأحرف صغيرة، مع فصل الكلمات بشرطة سفلية عند الحاجة:
student_name = "Ahmed"
total_price = 150
is_active = True
قارن ذلك بأسماء مثل x أو a1 في برنامج حقيقي. الاسم الوصفي يخبرك بما تمثله القيمة بدون الحاجة إلى تخمين.
هل name وName متغير واحد؟
لا. أسماء بايثون حساسة لحالة الأحرف، لذلك هذه أسماء مختلفة:
name = "Ali"
Name = "Sara"
print(name)
print(Name)
الناتج:
Ali
Sara
إذا استخدمت اسمًا غير معرف أو أخطأت في كتابة الحروف، قد تواجه NameError. يوجد شرح مستقل عن حل خطأ NameError: name is not defined في بايثون.
إسناد أكثر من متغير في سطر واحد
تسمح بايثون بإسناد عدة قيم لعدة أسماء في تعليمة واحدة:
x, y, z = 10, 20, 30
print(x, y, z)
الناتج:
10 20 30
ويمكن أيضًا إسناد الكائن نفسه إلى أكثر من اسم:
a = b = 0
هذه الصيغ مفيدة، لكن لا تحتاج الآن إلى التوسع في Unpacking أو تفاصيل مشاركة الكائنات؛ ستقابلها بصورة طبيعية في الدروس اللاحقة.
أخطاء شائعة عند استخدام المتغيرات
| الكود | المشكلة | التصحيح |
|---|---|---|
2name = "Ali" |
الاسم يبدأ برقم. | name2 = "Ali" |
user name = "Ali" |
الاسم يحتوي على مسافة. | user_name = "Ali" |
print(Name) |
استخدمت اسمًا مختلفًا عن name. |
اكتب الاسم بنفس حالة الأحرف. |
print(score) قبل تعريفه |
الاسم غير مرتبط بقيمة بعد. | أسند قيمة إلى score قبل استخدامه. |
class = 1 |
class كلمة محجوزة. |
استخدم اسمًا مثل class_number. |
تمرين بسيط على المتغيرات
أنشئ ثلاثة متغيرات للاسم والعمر والمدينة، ثم اطبعها:
name = "Mona"
age = 22
city = "Aden"
print(name)
print(age)
print(city)
بعد ذلك غيّر القيم وشغّل البرنامج مرة أخرى. ويمكنك تجربة المثال مباشرة في محرر بايثون العرب.
أسئلة شائعة
ما هو المتغير في بايثون؟
هو اسم يُربط بقيمة أو كائن حتى تستطيع الرجوع إليه واستخدامه في الكود. عند إعادة الإسناد يمكن للاسم نفسه أن يشير إلى كائن آخر.
هل يجب تحديد نوع المتغير قبل إنشائه؟
لا. بايثون لغة ذات Dynamic Typing، لذلك لا تحتاج إلى إعلان int أو str قبل اسم المتغير. نوع الكائن معروف وقت التشغيل.
ما الفرق بين = و ==؟
الرمز = يستخدم للإسناد، مثل age = 20. أما == فيستخدم للمقارنة بين القيم، وستتعلمه مع العوامل والشروط.
هل يمكن أن يبدأ اسم المتغير برقم؟
لا. يمكن أن يحتوي الاسم على أرقام بعد البداية، مثل user2، لكنه لا يمكن أن يبدأ برقم مثل 2user.
هل name وName هما المتغير نفسه؟
لا. حالة الأحرف مهمة في بايثون، لذلك name وName وNAME أسماء مختلفة.
ما الخطوة التالية؟
بعد فهم المتغيرات، انتقل عبر صفحة كورس أساسيات بايثون إلى الدروس التالية في المسار، حيث ستتعلم العوامل وأنواع البيانات وكيف تتصرف القيم المختلفة داخل البرنامج.
مصادر رسمية
- Python Language Reference — Assignment statements
- Python Language Reference — Naming and binding
- Python Language Reference — Names
- PEP 8 — Function and variable names
الخلاصة
المتغير في بايثون هو اسم يرتبط بكائن أو قيمة داخل البرنامج. تستخدم = للإسناد، ويمكن إعادة ربط الاسم بقيمة أخرى لاحقًا. لا تحتاج إلى تحديد النوع مسبقًا، ويمكنك استخدام type() لمعرفة نوع القيمة الحالية.
اختر أسماء واضحة وصحيحة، واستخدم snake_case عند وجود أكثر من كلمة، وانتبه لأن الأسماء حساسة لحالة الأحرف. فهم هذه القواعد الآن سيجعل دروس أنواع البيانات والعوامل والشروط أسهل بكثير.
{alertSuccess} القاعدة العملية: لا تفكر في المتغير كاسم عشوائي فقط؛ اختر اسمًا يوضح معنى القيمة التي يشير إليها، ثم استخدمه باستمرار بنفس الكتابة.