AzLearn

المتغيرات والأنواع

Variables & Types

مفهوم ~15 دقيقة

المتغيرات والأنواع — Variables & Types

المتغيرات هي الوعاء الذي تضع فيه البيانات. في Python لا تحتاج أن تُخبر اللغة بنوع المتغير مسبقاً — Python تعرف النوع من القيمة التي تُعطيها. هذا ما يسمى الكتابة الديناميكية (dynamic typing).

# أنشئ متغير — Create a variable
name = "فاطمة"
age = 23
height = 1.65
is_student = True

كل ما فعلناه هنا: كتبنا اسم المتغير، وضعنا علامة =، ثم أعطيناه قيمة. Python تفهم من القيمة أن name نص وage عدد صحيح وheight عدد عشري وis_student قيمة منطقية.

الأنواع الأساسية في Python

Python تأتي بخمسة أنواع أساسية تحتاجها في كل برنامج:

int — الأعداد الصحيحة

# عدد صحيح — Integer
score = 100
year = 2025
temperature = -5

لا حد لحجم الأعداد الصحيحة في Python. تستطيع كتابة أرقام كبيرة جداً دون أن تقلق.

float — الأعداد العشرية

# عدد عشري — Float
price = 49.99
vat_rate = 0.15
pi = 3.14159

الأعداد العشرية مفيدة للأسعار والنسب المئوية والقياسات.

str — النصوص

# نص — String
city = "المدينة المنورة"
greeting = 'أهلاً'
message = "Python سهل التعلم"

يمكن استخدام علامات تنصيص مفردة أو مزدوجة — النتيجة واحدة.

bool — القيم المنطقية

# قيمة منطقية — Boolean
is_logged_in = True
has_permission = False

True وFalse يبدآن بحرف كبير في Python. هذا مهم — true بحرف صغير خطأ.

None — القيمة الفارغة

# قيمة فارغة — None
result = None
user_input = None

None تعني “لا توجد قيمة”. تستخدمها عندما تريد الإشارة إلى أن متغيراً ليس له قيمة بعد.

معرفة نوع المتغير بـ type()

في أي وقت تريد معرفة نوع متغير، استخدم الدالة type():

main.go

شغّل هذا الكود وانظر كيف تُخبرك Python بنوع كل متغير.

تحويل الأنواع

أحياناً تحتاج تحويل قيمة من نوع إلى آخر. Python تُتيح ذلك بدوال بسيطة:

من نص إلى عدد:

# تحويل نص إلى عدد صحيح — Convert string to int
user_input = "42"
number = int(user_input)   # الآن يمكن إجراء عمليات حسابية

# تحويل نص إلى عدد عشري — Convert string to float
price_text = "19.99"
price = float(price_text)

من عدد إلى نص:

# تحويل عدد إلى نص — Convert int to string
age = 23
age_text = str(age)   # "23" — نص الآن

# مفيد عند دمج النصوص — Useful when combining strings
message = "عمري " + str(age) + " سنة"

تحويلات أخرى مفيدة:

# تحويل إلى منطقي — Convert to boolean
print(bool(0))      # False — الصفر يساوي False
print(bool(1))      # True  — أي رقم غير صفر هو True
print(bool(""))     # False — النص الفارغ هو False
print(bool("نص"))   # True  — أي نص غير فارغ هو True
main.go

قواعد تسمية المتغيرات

قواعد التسمية في Python ليست اختيارية — بعضها إلزامي وبعضها عرف مشترك بين المطورين:

القواعد الإلزامية:

  • لا يبدأ الاسم برقم: 1name خطأ، name1 صحيح
  • لا مسافات في الاسم: first name خطأ، first_name صحيح
  • لا رموز خاصة إلا الشرطة السفلية _: user-name خطأ، user_name صحيح

عرف snake_case — الأكثر استخداماً في Python:

# snake_case — الأسلوب المتفق عليه في Python
first_name = "نورة"
total_price = 299.0
is_active = True
max_retries = 3

نكتب الكلمات بحروف صغيرة ونفصل بينها بشرطة سفلية. هذا هو الأسلوب الرسمي الموثق في PEP 8.

الثوابت بـ UPPER_CASE:

# ثوابت بحروف كبيرة — Constants in UPPER_CASE
MAX_ITEMS = 100
VAT_RATE = 0.15
APP_NAME = "AzLearn"
BASE_URL = "https://learn.azizwares.sa"

الثوابت في Python مجرد عرف — اللغة لا تمنع تغييرها، لكن الاسم بالحروف الكبيرة يُخبر المطورين الآخرين “لا تغير هذه القيمة”.

الكتابة الديناميكية في العمل

في Python يمكن إعادة تعيين متغير بقيمة من نوع مختلف. هذا ممكن لكن نادراً ما هو مفيد:

x = 10      # x هو int
x = "نص"   # الآن x أصبح str — ممكن لكن مُربك للقارئ

الممارسة الجيدة: حافظ على نوع المتغير طوال حياته في الكود. إذا احتجت نوعاً مختلفاً، أنشئ متغيراً جديداً باسم واضح.

main.go

المتغيرات في Python لا تحتاج تصريحاً مسبقاً

في بعض اللغات مثل Go أو Java تُعرّف المتغير أولاً ثم تُعطيه قيمة. في Python الأمر أبسط — التعريف والتعيين يحدثان معاً في نفس السطر. لا توجد “قيمة صفرية” تلقائية كما في Go؛ إذا حاولت استخدام متغير قبل تعريفه ستحصل على NameError.

# هذا خطأ — This is an error
print(undefined_variable)  # NameError: name 'undefined_variable' is not defined

# الصحيح: عرّف أولاً — Correct: define first
count = 0
print(count)  # 0
تحدي — Challenge

خلاصة

المتغيرات في Python بسيطة: اكتب الاسم، ضع =، واعطِ القيمة. Python تستنتج النوع تلقائياً. عند الحاجة لتحويل النوع استخدم int() أو float() أو str(). اتبع snake_case لأسماء المتغيرات والثوابت بـ UPPER_CASE. في الدرس القادم ستتعلم كيف تتعامل مع النصوص وتنسيقها بطريقة احترافية باستخدام f-strings.