الدوال المدمجة في بايثون
الدوال المدمجة في بايثون هي مجموعة من الوظائف الجاهزة التي يوفرها المفسر بشكل افتراضي دون الحاجة إلى استيراد مكتبات خارجية. هذه الدوال تمثل حجر الأساس في بناء التطبيقات البرمجية، حيث أنها توفر عمليات أساسية وفعّالة تتعلق بهياكل البيانات، التحويل بين الأنواع، معالجة النصوص، الحسابات الرياضية، والتكامل مع مبادئ البرمجة الكائنية (OOP). أهميتها تكمن في كونها مكتوبة بلغة C ومهيأة لتكون سريعة وآمنة، مما يقلل من أخطاء الذاكرة ويمنع المطورين من إعادة اختراع العجلة. في سياق تطوير الباك-إند، الدوال المدمجة تساعد في كتابة خوارزميات فعّالة، إدارة البيانات الكبيرة، وتحسين الأداء مع تقليل التعقيد. المفاهيم الرئيسية التي سنتناولها تشمل الصياغة الصحيحة لاستدعاء هذه الدوال، كيفية التعامل مع هياكل البيانات (مثل القوائم والقواميس)، دمجها مع الخوارزميات المتقدمة، ودورها في دعم مبادئ الـ OOP عبر الدوال مثل super
و classmethod
. سيتعلم القارئ كيفية استغلال هذه الدوال بشكل عملي لبناء أنظمة قابلة للتوسع، آمنة، وسهلة الصيانة ضمن سياق هندسة البرمجيات المتقدمة.
لنأخذ مثالاً عملياً في نظام باك-إند يحتاج إلى استقبال بيانات المستخدمين، معالجتها، والتحقق من صحتها قبل تخزينها في قاعدة البيانات. يمكننا استخدام عدة دوال مدمجة لتحقيق هذه الخطوات بكفاءة. على سبيل المثال، نستخدم input()
لقراءة البيانات، ثم int()
للتحويل إلى نوع صحيح عند الحاجة، مع استخدام isinstance()
لضمان صحة النوع. بعد ذلك، يمكننا استخدام abs()
للتأكد من أن القيم العددية غير سالبة، واستخدام sorted()
لترتيب البيانات قبل تخزينها. إذا كان لدينا قائمة من القيم النصية، يمكننا تطبيق map()
للتحويل، أو filter()
لإزالة العناصر غير الصالحة. هذا المثال يوضح أن الدوال المدمجة ليست مجرد أدوات صغيرة، بل هي عناصر أساسية تدعم بناء أنظمة كاملة. في حالة الباك-إند، هذه الدوال تساعد في منع الأخطاء الشائعة مثل معالجة أنواع غير متوافقة، تجنب استهلاك الذاكرة غير الضروري، وضمان أن الخوارزميات تعمل بكفاءة عالية. النتيجة النهائية هي كود مختصر، آمن، وسهل الصيانة في أنظمة حقيقية.
Example
pythondef معالجة_البيانات(قائمة_مدخلات):
\# التحقق من أن المدخلات قائمة
if not isinstance(قائمة_مدخلات, list):
raise TypeError("يجب أن تكون المدخلات قائمة")
# تحويل القيم إلى أعداد صحيحة باستخدام map و int
أعداد = list(map(int, قائمة_مدخلات))
# استخدام abs للتأكد من أن الأعداد موجبة
أعداد_موجبة = [abs(x) for x in أعداد]
# حساب بعض الإحصائيات باستخدام sum و len و max و min
مجموع = sum(أعداد_موجبة)
أكبر = max(أعداد_موجبة)
أصغر = min(أعداد_موجبة)
عدد = len(أعداد_موجبة)
# ترتيب النتائج باستخدام sorted
مرتبة = sorted(أعداد_موجبة)
return {
"العدد": عدد,
"المجموع": مجموع,
"الأكبر": أكبر,
"الأصغر": أصغر,
"مرتبة": مرتبة
}
# تجربة
بيانات = \["-4", "10", "3", "-7"]
print(معالجة_البيانات(بيانات))
📊 Comprehensive Reference
الدالة | الوصف | الصياغة | المثال | ملاحظات |
---|---|---|---|---|
abs | إرجاع القيمة المطلقة | abs(x) | abs(-7) | يدعم int و float و complex |
all | إرجاع True إذا كانت جميع العناصر صحيحة | all(iterable) | all(\[1, True, 3]) | القائمة الفارغة تعطي True |
any | إرجاع True إذا كان أحد العناصر صحيح | any(iterable) | any(\[0, False, 5]) | القائمة الفارغة تعطي False |
ascii | تمثيل ASCII للكائن | ascii(object) | ascii("café") | يهرب الأحرف غير ASCII |
bin | تحويل إلى ثنائي | bin(x) | bin(10) | تضيف "0b" |
bool | تحويل إلى قيمة منطقية | bool(x) | bool(\[]) | قائمة فارغة تعطي False |
breakpoint | دخول المصحح | breakpoint() | breakpoint() | يستعمل pdb افتراضياً |
bytearray | إنشاء بايتات قابلة للتغيير | bytearray(\[src]) | bytearray(b"text") | مقابل bytes |
bytes | إنشاء بايتات ثابتة | bytes(\[src]) | bytes("abc","utf-8") | غير قابلة للتغيير |
callable | التحقق إن كان قابلاً للاستدعاء | callable(obj) | callable(len) | الدوال والكلاسات تعطي True |
chr | إرجاع محرف من رقم Unicode | chr(i) | chr(65) | عكس ord() |
classmethod | تعريف دالة صف | @classmethod | classmethod(func) | يستقبل cls بدلاً من self |
compile | ترجمة الكود | compile(src,fn,mode) | compile("3+5","","eval") | مع exec/eval |
complex | إنشاء عدد مركب | complex(r,i) | complex(2,3) | يدعم السلاسل |
delattr | حذف خاصية | delattr(obj,name) | delattr(obj,"x") | يرفع خطأ إن لم يوجد |
dict | إنشاء قاموس | dict(\[map]) | dict(a=1,b=2) | مرن جداً |
dir | عرض الخصائص | dir(\[obj]) | dir(str) | يشمل الدوال |
divmod | قسمة مع باقي | divmod(a,b) | divmod(9,2) | ترجع (قسم، باقي) |
enumerate | ترقيم العناصر | enumerate(it) | list(enumerate(\["a","b"])) | يدعم start |
eval | تقييم تعبير | eval(expr) | eval("3+5") | خطر أمنياً |
exec | تنفيذ كود | exec(obj) | exec("x=5") | تنفيذ ديناميكي |
filter | تصفية عناصر | filter(func,it) | list(filter(lambda x:x>0,\[1,-2,3])) | ترجع iterator |
float | تحويل إلى عدد عشري | float(x) | float("3.14") | يدعم inf, nan |
format | تنسيق نص | format(val,fmt) | format(5,"03") | أوسع في str.format |
frozenset | مجموعة ثابتة | frozenset(it) | frozenset(\[1,2]) | قابلة للتجزئة |
getattr | إرجاع خاصية | getattr(obj,name\[,d]) | getattr(obj,"x",0) | آمن ضد AttributeError |
globals | المجال العام | globals() | globals()\["name"] | ترجع dict |
hasattr | التحقق من خاصية | hasattr(obj,name) | hasattr(\[], "append") | ترجع bool |
hash | إرجاع قيمة تجزئة | hash(obj) | hash("abc") | يعمل مع القيم القابلة للتجزئة |
help | مساعدة تفاعلية | help(\[obj]) | help(str) | أداة سطر الأوامر |
hex | تحويل إلى ست عشري | hex(x) | hex(255) | تضيف "0x" |
id | إرجاع هوية الكائن | id(obj) | id(42) | فريد طوال عمر الكائن |
input | إدخال المستخدم | input(\[msg]) | input("Name: ") | يعيد str |
int | تحويل إلى عدد صحيح | int(x\[,b]) | int("101",2) | يدعم bases |
isinstance | التحقق من النوع | isinstance(obj,cls) | isinstance(5,int) | يدعم tuple |
issubclass | التحقق من الوراثة | issubclass(c,b) | issubclass(bool,int) | True إذا كان فرعي |
iter | إنشاء مكرر | iter(obj) | iter(\[1,2,3]) | يدعم sentinel |
len | إرجاع الطول | len(obj) | len("abc") | يدعم الحاويات |
list | إنشاء قائمة | list(\[it]) | list("abc") | قابلة للتغيير |
locals | المجال المحلي | locals() | locals()\["x"] | تتغير ديناميكياً |
map | تطبيق دالة | map(func,it) | list(map(str,\[1,2])) | ترجع iterator |
max | القيمة الكبرى | max(it) | max(\[1,5,3]) | يدعم key |
memoryview | عرض الذاكرة | memoryview(obj) | memoryview(b"abc") | فعال جداً |
min | القيمة الصغرى | min(it) | min(\[1,5,3]) | يدعم key |
next | العنصر التالي | next(it\[,d]) | next(iter(\[1,2])) | يرفع StopIteration |
object | كائن أساسي | object() | obj = object() | جذر الوراثة |
oct | تحويل إلى ثماني | oct(x) | oct(8) | تضيف "0o" |
open | فتح ملف | open(fn,mode) | open("f.txt","r") | مدير سياق |
ord | إرجاع Unicode | ord(char) | ord("A") | عكس chr |
pow | الأسس مع mod | pow(x,y\[,z]) | pow(2,3,5) | أكثر كفاءة مع mod |
طباعة | print(obj) | print("Hi") | يدعم args متعددة | |
property | تعريف خاصية | @property | property(f) | OOP |
range | توليد أعداد | range(\[s],e\[,st]) | range(5) | كسول |
repr | تمثيل نصي | repr(obj) | repr(\[1,2]) | للـ debug |
reversed | عكس تسلسل | reversed(seq) | list(reversed(\[1,2])) | يتطلب sequence |
round | تقريب عدد | round(x\[,n]) | round(3.1415,2) | تقريب بنكي |
set | إنشاء مجموعة | set(\[it]) | set("abc") | عناصر فريدة |
setattr | تعيين خاصية | setattr(obj,n,v) | setattr(obj,"a",10) | تعيين ديناميكي |
slice | إنشاء شريحة | slice(s,e\[,st]) | slice(1,5) | يستعمل في \[] |
sorted | ترتيب | sorted(it) | sorted(\[3,1,2]) | يدعم key, reverse |
staticmethod | دالة ثابتة | @staticmethod | staticmethod(f) | بدون self |
str | إنشاء نص | str(obj) | str(123) | غير قابل للتغيير |
sum | جمع | sum(it\[,s]) | sum(\[1,2,3]) | يدعم start |
super | استدعاء الأب | super() | super().method() | OOP |
tuple | إنشاء tuple | tuple(\[it]) | tuple("ab") | غير قابل للتغيير |
type | إرجاع النوع | type(obj) | type(5) | يدعم إنشاء الكلاسات |
vars | إرجاع dict | vars(\[obj]) | vars(str) | قاموس الخصائص |
zip | دمج | zip(*its) | list(zip(\[1,2],\[3,4])) | ترجع iterator |
import | استيراد | import(name) | import("math") | داخلي |
📊 Complete Properties Reference
الدالة | نوع الإرجاع | السلوك الافتراضي | الوصف | التوافق |
---|---|---|---|---|
abs | int/float/complex | إرجاع القيمة المطلقة | حساب رياضي | كل الإصدارات |
all | bool | True للقائمة الفارغة | التحقق من جميع العناصر | كل الإصدارات |
any | bool | False للقائمة الفارغة | التحقق من عنصر واحد | كل الإصدارات |
ascii | str | يهرب غير ASCII | تمثيل آمن | 3+ |
bin | str | إرجاع نص ثنائي | تحويل int لثنائي | كل الإصدارات |
bool | bool | False للقيم الفارغة | تحويل منطقي | كل الإصدارات |
breakpoint | None | تشغيل pdb | مصحح أخطاء | 3.7+ |
bytearray | bytearray | فارغ | تسلسل بايت متغير | كل الإصدارات |
bytes | bytes | فارغ | تسلسل بايت ثابت | كل الإصدارات |
callable | bool | يتحقق من الاستدعاء | كائن قابل للاستدعاء | كل الإصدارات |
chr | str | محرف واحد | تحويل int إلى char | كل الإصدارات |
classmethod | classmethod | تغليف دالة | تعمل على الصف | كل الإصدارات |
compile | code | ترجمة نص | كائن كود | كل الإصدارات |
complex | complex | إنشاء مركب | عدد مركب | كل الإصدارات |
delattr | None | حذف خاصية | إزالة خاصية | كل الإصدارات |
dict | dict | قاموس فارغ | إنشاء قاموس | كل الإصدارات |
dir | list | عرض خصائص | استكشاف الكائن | كل الإصدارات |
divmod | tuple | قسم وباقي | قسمة | كل الإصدارات |
enumerate | enumerate | ترقيم عناصر | Enumerate | كل الإصدارات |
eval | Any | تقييم نص | تنفيذ تعبير | كل الإصدارات |
exec | None | تنفيذ كود | تنفيذ ديناميكي | كل الإصدارات |
filter | iterator | ترشيح | تصفية عناصر | كل الإصدارات |
float | float | 0.0 | تحويل إلى float | كل الإصدارات |
format | str | تنسيق | إرجاع نص | كل الإصدارات |
frozenset | frozenset | مجموعة فارغة | مجموعة ثابتة | كل الإصدارات |
getattr | Any | يرفع خطأ إن لم يوجد | إرجاع خاصية | كل الإصدارات |
globals | dict | المجال العام | إرجاع globals | كل الإصدارات |
hasattr | bool | False إذا لم يوجد | التحقق من خاصية | كل الإصدارات |
hash | int | تجزئة | قيمة hash | كل الإصدارات |
help | None | مساعدة | نظام المساعدة | كل الإصدارات |
hex | str | سلسلة hex | تحويل int | كل الإصدارات |
id | int | معرف الكائن | هوية فريدة | كل الإصدارات |
input | str | طلب المستخدم | إدخال نصي | كل الإصدارات |
int | int | 0 | تحويل إلى int | كل الإصدارات |
isinstance | bool | تحقق النوع | فحص نوع الكائن | كل الإصدارات |
issubclass | bool | فحص الوراثة | علاقات الكلاسات | كل الإصدارات |
iter | iterator | إنشاء مكرر | مكرر للكائن | كل الإصدارات |
len | int | طول | عدد العناصر | كل الإصدارات |
list | list | قائمة فارغة | إنشاء قائمة | كل الإصدارات |
locals | dict | المجال المحلي | إرجاع locals | كل الإصدارات |
map | iterator | تطبيق دالة | تحويل عناصر | كل الإصدارات |
max | Any | أكبر عنصر | قيمة كبرى | كل الإصدارات |
memoryview | memoryview | عرض ذاكرة | مؤشر بايتات | كل الإصدارات |
min | Any | أصغر عنصر | قيمة صغرى | كل الإصدارات |
next | Any | العنصر التالي | مؤشر | كل الإصدارات |
object | object | كائن أساسي | جذر الوراثة | كل الإصدارات |
oct | str | نص ثماني | تحويل int | كل الإصدارات |
open | file object | وضع r | فتح ملفات | كل الإصدارات |
ord | int | رمز Unicode | char إلى int | كل الإصدارات |
pow | int/float | الأسس | حساب الأس | كل الإصدارات |
None | إلى stdout | طباعة | كل الإصدارات | |
property | property | إدارة خاصية | كبسلة OOP | كل الإصدارات |
range | range | فارغ | توليد نطاق | كل الإصدارات |
repr | str | تمثيل غير غامض | Debug | كل الإصدارات |
reversed | iterator | عكس تسلسل | Iterator | كل الإصدارات |
round | int/float | تقريب | تقريب أعداد | كل الإصدارات |
set | set | مجموعة فارغة | إنشاء مجموعة | كل الإصدارات |
setattr | None | تعيين | تعيين خاصية | كل الإصدارات |
slice | slice | شريحة | كائن slice | كل الإصدارات |
sorted | list | تصاعدي | ترتيب عناصر | كل الإصدارات |
staticmethod | staticmethod | تغليف | بدون self/cls | كل الإصدارات |
str | str | نص فارغ | إنشاء نص | كل الإصدارات |
sum | int/float | 0 | جمع عناصر | كل الإصدارات |
super | super | الوصول للأب | وراثة | كل الإصدارات |
tuple | tuple | tuple فارغ | إنشاء tuple | كل الإصدارات |
type | type | إرجاع النوع | كائن النوع | كل الإصدارات |
vars | dict | dict | خصائص الكائن | كل الإصدارات |
zip | iterator | دمج | دمج متوازٍ | كل الإصدارات |
import | module | استيراد | استيراد ديناميكي | كل الإصدارات |
🧠 اختبر معرفتك
اختبر معلوماتك
اختبر فهمك للدوال المدمجة في بايثون
📝 التعليمات
- اقرأ كل سؤال بعناية
- اختر أفضل إجابة لكل سؤال
- يمكنك إعادة الاختبار عدة مرات كما تريد
- سيتم عرض تقدمك في الأعلى