أساسيات بايثون (7): أنواع البيانات الأساسية Python Data Types

أساسيات بايثون (7): أنواع البيانات الأساسية Python Data Types
مرحباً بك في الدرس السابع من دورتنا الشيقة لتعلم أساسيات بايثون! 🎉
💻 تطبيق فوري: جرب كل الأمثلة بنفسك على محرر بايثون العرب لتثبيت المعلومة عملياً.

اليوم سنغوص في عالم أنواع البيانات (Data Types) – التصنيفات الأساسية لكل قيمة تخزنها في المتغيرات. هل تعلم أن بايثون تصنف كل شيء تخزنه؟ رقم، نص، قائمة، قاموس... لكل نوع شخصيته وقدراته الخاصة. معرفة هذه الأنواع تتيح لك اختيار الأداة المناسبة لكل مهمة، وتجنب الأخطاء الغبية. لنبدأ! 🚀

🤔 ما هو نوع البيانات (Data Type)؟

ببساطة، نوع البيانات يحدد طبيعة القيمة التي يحملها المتغير، وبالتالي يحدد العمليات التي يمكنك إجراؤها عليها. لا يمكنك جمع نص مع رقم مباشرة، ولا يمكنك البحث عن فهرس داخل قاموس. لماذا؟ لأن لكل نوع قواعده.

في بايثون، يتم تحديد النوع تلقائياً عند الإسناد:
x = 5 # int
y = "Hello" # str
لكن يمكنك معرفة النوع في أي وقت باستخدام الدالة السحرية ()type:
x = 5
print(type(x)) # <class 'int'>

📸 [صورة: جدول يظهر أيقونات ملونة لكل نوع بيانات مع اسمه بالإنجليزية والعربية]


🗂️ الأنواع المدمجة الرئيسية في بايثون

تقسم بايثون أنواع البيانات المدمجة إلى الفئات التالية:
الفئةالأنواع
Text Type (نصي)str
Numeric Types (رقمي)intfloatcomplex
Sequence Types (تسلسلي)listtuplerange
Mapping Type (تخطيطي)dict
Set Types (مجموعات)setfrozenset
Boolean Type (منطقي)bool
Binary Types (ثنائي)bytesbytearraymemoryview
لا تخف من الكم! سنركز على الأساسيات الآن، ونتعمق في كل نوع في دروس قادمة.

🧪 1. النوع النصي str (String)

يمثل أي نص، محاط بعلامات اقتباس مفردة أو مزدوجة:
x = "Hello World"
print(type(x)) # <class 'str'>
خصائصه: يمكن تكراره (for letter in text)، تقطيعه (text[0:5])، وحساب طوله (len(text)).

🔢 2. الأنواع الرقمية int, float, complex

int – عدد صحيح

أعداد كاملة، موجبة أو سالبة، بدون حد أقصى لطولها!
x = 1
y = 35656222554887711
z = -3255522
print(type(x), type(y), type(z)) # كلهم int

float – عدد عشري

أعداد تحتوي على فاصلة عشرية. يمكن كتابتها أيضاً بالصيغة العلمية باستخدام e:
x = 1.10
y = 1.0
z = -35.59
print(type(x)) # <class 'float'>

# صيغة علمية:
a = 35e3 # 35000.0
b = 12E4 # 120000.0
c = -87.7e100 # عدد ضخم جداً

complex – عدد مركب

له جزء حقيقي وجزء تخيلي (يُرمز له بـ j):
x = 3 + 5j
y = 5j
z = -5j
print(type(x)) # <class 'complex'>

📸 [صورة: أمثلة على الأعداد الصحيحة والعشرية والمركبة مع مخرجات type()]


📋 3. الأنواع التسلسلية list, tuple, range

list – قائمة

مجموعة مرتبة، قابلة للتغيير، وتسمح بالتكرار. محاطة بأقواس مربعة []:
x = ["apple", "banana", "cherry"]
print(type(x)) # <class 'list'>

tuple – صف

مثل القائمة، لكنها غير قابلة للتغيير بعد إنشائها. محاطة بأقواس دائرية ():
x = ("apple", "banana", "cherry")
print(type(x)) # <class 'tuple'>

range – نطاق

يُنتج سلسلة من الأعداد، يستخدم بكثرة في الحلقات:
x = range(6)
print(type(x)) # <class 'range'>

🧭 4. نوع التخطيط dict (Dictionary)

يخزن أزواجاً من مفتاح : قيمة. المفاتيح فريدة، والقيم يمكن أن تكون أي شيء. محاط بأقواس معقوفة {}:
x = {"name": "John", "age": 36}
print(type(x)) # <class 'dict'>
مفيد جداً لتمثيل كائنات حقيقية (مثل شخص، منتج، إعدادات).

🎒 5. أنواع المجموعات set, frozenset

set – مجموعة

مجموعة غير مرتبة، غير قابلة للتكرار (لا عناصر مكررة)، وقابلة للتغيير:
x = {"apple", "banana", "cherry"}
print(type(x)) # <class 'set'>

frozenset – مجموعة مجمدة

مثل set لكنها غير قابلة للتغيير:
x = frozenset({"apple", "banana", "cherry"})
print(type(x)) # <class 'frozenset'>

✅ 6. النوع المنطقي bool

يمثل قيمتين فقط: True أو False. ناتج المقارنات والشروط:
x = True
print(type(x)) # <class 'bool'>

📦 7. الأنواع الثنائية bytes, bytearray, memoryview

تتعامل مع البيانات الثنائية (صور، ملفات، اتصالات شبكة). سنؤجل تفاصيلها للمستويات المتقدمة:
x = b"Hello"
print(type(x)) # <class 'bytes'>

x = bytearray(5)
print(type(x)) # <class 'bytearray'>

x = memoryview(bytes(5))
print(type(x)) # <class 'memoryview'>

🎯 تحديد نوع البيانات يدوياً (Casting / Constructor)

إذا أردت فرض نوع معين بدلاً من تركه لبايثون، يمكنك استخدام دوال البناء (Constructor Functions):
الدالةمثالالناتج
str()str(10)'10'
int()int("20")20
float()float(5)5.0
complex()complex(1, 2)(1+2j)
list()list("abc")['a', 'b', 'c']
tuple()tuple([1, 2])(1, 2)
set()set([1, 2, 2]){1, 2}
dict()dict(name="A", age=20){'name': 'A', 'age': 20}
bool()bool(1)True

مثال:

x = str("Hello World") # str
x = int(20) # int
x = float(20.5) # float
x = complex(1j) # complex
x = list(("apple", "banana", "cherry")) # list
x = tuple(("apple", "banana", "cherry")) # tuple
x = range(6) # range
x = dict(name="John", age=36) # dict
x = set(("apple", "banana", "cherry")) # set
x = frozenset(("apple", "banana", "cherry")) # frozenset
x = bool(5) # bool (True)
x = bytes(5) # bytes
x = bytearray(5) # bytearray
x = memoryview(bytes(5)) # memoryview

📸 [صورة: جدول دوال البناء مع تحويلات مرئية (نص إلى رقم، قائمة إلى صف، …)]


🧪 جرّب بنفسك: استكشف الأنواع

انسخ هذا الكود في محرر بايثون العرب وشاهد التنوع:

variables = [
"Hello World", # str
20, # int
20.5, # float
1j, # complex
["apple", "banana"], # list
("apple", "banana"), # tuple
range(6), # range
{"name": "John"}, # dict
{"apple", "banana"}, # set
frozenset({"apple"}),# frozenset
True # bool
]

for var in variables:
print(f"{var} -> {type(var)}")

سترى كل قيمة ونوعها أمامك. إنه متحف صغير لأنواع بايثون! 🏛️


📢 انتظرونا في الدرس القادم

في الدرس الثامن سنغوص في تفاصيل الأعداد في بايثون (intfloatcomplex) ونتعلم العمليات الخاصة بكل نوع. لا تفوّته! 🔢🚀

 

إرسال تعليق

أحدث أقدم