ما هي دالة type() في بايثون؟ شرح شامل مع أمثلة عملية

1. ما هي دالة type() في بايثون؟

نظرة عامة على دالة type()

في بايثون، تُستخدم دالة type() بشكل متكرر للتحقق من نوع البيانات الخاصة بالكائنات. تعيد هذه الدالة نوع الكائن الذي تم تمريره كوسيط، مما يجعلها أداة مفيدة أثناء تصحيح البرامج أو التحقق من الأنواع. بفضل نظام النوع الديناميكي في بايثون، يمكنك بسهولة معرفة نوع البيانات لأي كائن.

طريقة الاستخدام الأساسية

تُستخدم دالة type() على النحو التالي:

type(الكائن)

تعيد هذه الدالة نوع الكائن على شكل كلاس. على سبيل المثال، يمكنك التحقق من نوع الأعداد الصحيحة أو السلاسل النصية كالتالي:

print(type(123))  # الناتج: <class 'int'>
print(type("Python"))  # الناتج: <class 'str'>

وباستخدام دالة type()، يمكنك تحديد نوع الكائن بوضوح، ومن المهم التحقق من النوع قبل القيام بأي عمليات تعتمد عليه.

2. الاستخدام الأساسي لدالة type()

التحقق من أنواع البيانات الأساسية

هناك عدة أنواع بيانات أساسية في بايثون، ويمكن التحقق من كل نوع باستخدام type(). من بين الأنواع الشائعة:

print(type(3.14))  # الناتج: <class 'float'>
print(type(True))  # الناتج: <class 'bool'>

هذه الأنواع الأساسية تُستخدم بكثرة في بايثون. يسمح لك استخدام type() بالتحقق من نوع المتغير أثناء تنفيذ البرنامج لتجنب أخطاء العمليات الخاطئة على الأنواع.

التحقق من النوع في الشروط

يمكن الجمع بين دالة type() وعبارات الشروط للتحقق مما إذا كان الكائن ينتمي لنوع معين. على سبيل المثال، للتحقق مما إذا كان الكائن عدداً صحيحاً:

if type(123) is int:
    print("هذا عدد صحيح.")

ويمكنك التحقق من عدة أنواع في نفس الوقت باستخدام عامل in:

if type([1, 2, 3]) in (list, int):
    print("قائمة أو عدد صحيح.")

التحقق من النوع في الشروط يساعد في منع الأخطاء غير المتوقعة.

年収訴求

3. التحقق من الأنواع المعقدة

التحقق من نوع القوائم، والـ tuples، والقواميس

في بايثون، يمكنك التحقق من الأنواع المعقدة مثل القوائم (list)، والـ tuples، والقواميس (dict) باستخدام type():

my_list = [1, 2, 3]
print(type(my_list))  # الناتج: <class 'list'>

my_tuple = (1, 2, 3)
print(type(my_tuple))  # الناتج: <class 'tuple'>

my_dict = {'a': 1, 'b': 2}
print(type(my_dict))  # الناتج: <class 'dict'>

تُستخدم هذه الأنواع لتخزين بيانات متعددة وتعد مهمة لبناء منطق مرن للبرامج.

التحقق من نوع set و frozenset

تستطيع type() أيضاً التحقق من نوع المجموعات (set) والمجموعات غير القابلة للتغيير (frozenset):

my_set = {1, 2, 3}
print(type(my_set))  # الناتج: <class 'set'>

my_frozenset = frozenset([1, 2, 3])
print(type(my_frozenset))  # الناتج: <class 'frozenset'>

تُستخدم هذه الأنواع لإجراء العمليات على المجموعات بناءً على شروط محددة.

4. تحويل الأنواع وتطبيقات type() في بايثون

نظرة عامة على تحويل الأنواع

يوفر بايثون عدة دوال لتحويل الأنواع بسهولة مثل int()، float()، وstr(). باستخدامها يمكنك تحويل النص إلى عدد صحيح أو عشري:

my_str = "100"
my_int = int(my_str)
print(type(my_int))  # الناتج: <class 'int'>

من المهم التحقق من نتيجة التحويل باستخدام type() بعد أي عملية تحويل.

التحقق بعد التحويل

يمكنك التأكد من نجاح تحويل النوع باستخدام type()، مثلاً تحويل نص إلى عدد عشري:

my_float = float("3.14")
print(type(my_float))  # الناتج: <class 'float'>

التحقق من النوع بعد التحويل مهم جداً خاصة مع بيانات المستخدم أو قراءة الملفات.

侍エンジニア塾

5. الفرق بين type() و isinstance()

خصائص isinstance()

هناك دالة أخرى مشابهة هي isinstance()، وتُستخدم للتحقق ما إذا كان الكائن ينتمي إلى نوع معين أو أي من الفئات الفرعية له:

x = 5
if isinstance(x, int):
    print("x عدد صحيح.")

تأخذ isinstance() في اعتبارها العلاقات بين الكلاسات (الوراثة)، لذلك هي مهمة للتحقق من الفئات الفرعية.

متى تستخدم type() ومتى isinstance()؟

تقوم type() بالتحقق من النوع بشكل صارم وتتجاهل الفئات الفرعية، بينما isinstance() تتعرف أيضاً على الفئات الفرعية. إذا كان هناك هيكل وراثة، يُنصح باستخدام isinstance().

class Animal:
    pass

class Dog(Animal):
    pass

dog = Dog()
print(isinstance(dog, Animal))  # True
print(type(dog) is Animal)  # False

في هذا المثال، لأن Dog ترث من Animal، تعتبر isinstance() الكائن dog من نوع Animal، أما type() فتحكم عليه بأنه Dog فقط.

6. الخلاصة ونقاط يجب الانتباه إليها

تعد دالة type() أداة قوية للتحقق من الأنواع في بايثون. مع ذلك، عند التعامل مع الوراثة، يكون من الأفضل غالبًا استخدام isinstance(). كما أنه من الضروري التعامل مع الأخطاء بشكل مناسب في الأكواد التي قد يتغير فيها النوع أثناء التنفيذ.

التحقق والتحويل بين الأنواع له دور أساسي في معالجة البيانات والتحقق من مدخلات المستخدم. استخدم هذه الدوال لبناء برامج أكثر متانة ومرونة.

RUNTEQ(ランテック)|超実戦型エンジニア育成スクール