المعاملات الأكثر استخدامًا في لغة بايثون: دليل عملي مع أمثلة
أكثر المعاملات استخدامًا في بايثون تنتمي إلى خمس مجموعات تتعامل معها في كل برنامج تقريبًا: المعاملات الحسابية (+، -، *، /، //، %، **)، ومعاملات المقارنة (==، !=، >، <، >=، <=)، والمعاملات المنطقية (and، or، not)، ومعاملات الإسناد (=، +=، -= وأخواتها)، ومعاملات العضوية والهوية (in، not in، is). إن أتقنت هذه الخمس فأنت تغطي الغالبية العظمى من الأكواد التي ستكتبها يوميًا. وفي ما يلي شرح عملي لكل مجموعة مع أمثلة وأخطاء شائعة يقع فيها المبتدئون.
المعاملات الحسابية
هذه هي أول ما يتعلمه أي مبرمج، لكن اثنين منها يخلطهما المبتدئون كثيرًا:
+جمع،-طرح،*ضرب،/قسمة عادية.//القسمة الصحيحة (تُرجِع الجزء الصحيح فقط):7 // 2يساوي3.%باقي القسمة (Modulo):7 % 2يساوي1، وهو مفيد جدًا لمعرفة إن كان الرقم زوجيًا (x % 2 == 0).**الرفع إلى قوة:2 ** 3يساوي8.
انتبه لنقطة مهمة: في بايثون 3 المعامل / يُرجِع دائمًا رقمًا عشريًا حتى لو كانت القسمة صحيحة، فـ 10 / 2 نتيجته 5.0 وليست 5. إن أردت عددًا صحيحًا استخدم // أو حوِّل النتيجة بـ int().
معاملات المقارنة
تُرجِع دائمًا قيمة منطقية: إما True أو False، وتُستخدَم غالبًا داخل جُمل الشرط if:
==يساوي،!=لا يساوي.>أكبر من،<أقل من،>=أكبر أو يساوي،<=أقل أو يساوي.
الخطأ الأشهر على الإطلاق هو استخدام = بدل == داخل الشرط. تذكّر القاعدة: علامة واحدة = تعني «خزّن القيمة»، وعلامتان == تعنيان «قارِن». من مزايا بايثون الجميلة أنها تسمح بسلسلة المقارنات مباشرة كما في الرياضيات، فبدل كتابة x > 0 and x < 10 يمكنك ببساطة كتابة 0 < x < 10.
المعاملات المنطقية
تربط عدة شروط معًا وتكتَب بكلمات إنجليزية لا برموز:
and: تُرجِعTrueإذا تحقّق الشرطان معًا.or: تُرجِعTrueإذا تحقّق أحد الشرطين على الأقل.not: تعكس القيمة المنطقية.
مثال عملي: if age >= 18 and has_id: تسمح بالدخول فقط عندما يكون العمر 18 فأكثر وبحوزة الشخص بطاقة. لاحظ أن بايثون تستخدم الكلمات and وor وnot، وليست الرموز && و|| المألوفة في لغات مثل C أو JavaScript.
معاملات الإسناد
أبسطها = لتخزين قيمة في متغيّر، لكن هناك اختصارات مفيدة توفّر عليك الكتابة:
x += 5تعنيx = x + 5.- وبالمثل:
-=،*=،/=،//=،%=،**=.
هذه الاختصارات تجعل الكود أقصر وأوضح، خصوصًا داخل الحلقات عند العدّ أو التجميع.
معاملات العضوية والهوية
مجموعة عملية جدًا وكثيرة الاستخدام:
inوnot in: للتحقق من وجود عنصر داخل قائمة أو نص أو قاموس. مثال:if "@" in email:أوif user not in banned_list:.isوis not: للتحقق من أن متغيّرين يشيران إلى الكائن نفسه في الذاكرة، وليس مجرد تساوي القيمة.
جدول: المعاملات التي يخلط بينها المبتدئون
| المقارنة | ماذا يفعل الأول | ماذا يفعل الثاني | متى تستخدم أيهما |
|---|---|---|---|
== أم is | يقارن القيم | يقارن هوية الكائن في الذاكرة | استخدم == للقيم، وis فقط مع None مثل if x is None |
/ أم // | قسمة عشرية (5.0) | قسمة صحيحة (5) | // عندما تريد عددًا صحيحًا بلا كسور |
= أم == | إسناد قيمة | مقارنة | داخل الشرط استخدم == دائمًا |
نصيحة مهمة: لا تستخدم is لمقارنة الأرقام أو النصوص أبدًا مثل if x is 5؛ فقد تعمل أحيانًا بالصدفة وتفشل أحيانًا أخرى بسبب طريقة تخزين بايثون للقيم. القاعدة الذهبية: == للقيم، وis محجوزة لـ None وللقيم المنطقية الخاصة.
معاملات إضافية تراها أحيانًا
- المعاملات الثنائية (Bitwise) مثل
&و|و^و~و<<و>>، وتُستخدَم في العمليات على مستوى البِتّات، وهي أقل شيوعًا في البرمجة اليومية. - معامل الفهرسة والدمج:
+نفسه يعمل على النصوص والقوائم للدمج، فـ"مرحبا" + " بالعالم"ينتج نصًا واحدًا. - المعامل الحديث «الفظّ» (Walrus)
:=الذي أُضيف في بايثون 3.8، ويسمح بالإسناد داخل التعبير مباشرة، وهو مفيد لكن لا يحتاجه المبتدئ فورًا.
الأسئلة الشائعة
ما الفرق بين / و// في بايثون؟
/ تُرجِع دائمًا رقمًا عشريًا (7 / 2 = 3.5)، بينما // تُرجِع الجزء الصحيح فقط (7 // 2 = 3). استخدم الثاني عندما لا تريد كسورًا.
لماذا لا أستخدم && و|| كما في لغات أخرى؟
لأن بايثون صُمّمت لتكون قريبة من اللغة الطبيعية، فاستبدلت الرموز بالكلمات and وor وnot. استخدام && سيُنتج خطأً في بناء الجملة.
متى أستخدم is بدل ==؟
استخدم is فقط للتحقق من الهوية، وعمليًا مع None كما في if result is None. لكل مقارنات القيم الأخرى استخدم ==.
ما ترتيب تنفيذ المعاملات عند اجتماعها؟
تتبع بايثون أولويات مشابهة للرياضيات: ** أولًا، ثم الضرب والقسمة، ثم الجمع والطرح، وأخيرًا المقارنات فالمعاملات المنطقية. وعند الشك ضع أقواس () لتوضيح نيّتك وتجنّب الأخطاء.