العوامل في بايثون Operators هي رموز أو كلمات تنفّذ عمليات على القيم، مثل الجمع باستخدام +، والمقارنة باستخدام ==، والتحقق من الشروط باستخدام and. في هذا الدرس السادس من أساسيات بايثون ستتعلم سبعة أنواع رئيسية من العوامل، مع أمثلة قصيرة توضّح وظيفة كل نوع والفرق بين الرموز المتشابهة.
ابدأ بالعوامل الحسابية والإسناد والمقارنة والمنطق؛ فهي الأكثر احتياجًا عند كتابة برامجك الأولى. ثم تعرّف إلى عوامل الهوية والعضوية، وخذ فكرة تمهيدية عن عوامل البت. ستتعلم أيضًا لماذا تعطي / و// نتيجتين مختلفتين، وكيف تؤثر أولوية العمليات في الناتج، ومتى تستخدم is بدل ==.
{alertInfo}الإجابة السريعة: العامل هو ما ينفّذ العملية؛ في10 + 5العامل هو+والرقمان هما طرفا العملية. لا تحتاج إلى حفظ جميع العوامل دفعة واحدة؛ افهم أمثلتها ثم جرّبها.
{getToc} $title={محتوى المقال}
ما معنى Operators في بايثون؟
العامل Operator هو رمز أو كلمة لها وظيفة في تعبير برمجي. مثلًا:
print(10 + 5)
الناتج:
15
هنا + عامل حسابي، أما 10 و5 فهما القيمتان المستخدمتان في العملية. إذا احتجت إلى مراجعة كيفية إنشاء الأسماء وإسناد القيم لها، اقرأ الدرس الخامس: المتغيرات في بايثون.
أنواع العوامل في بايثون باختصار
| النوع | أمثلة | وظيفته |
|---|---|---|
| حسابية | + - * / // % ** | إجراء الحسابات. |
| إسناد | = += -= *= | ربط الاسم بقيمة أو تحديثها. |
| مقارنة | == != > < >= <= | مقارنة قيمتين. |
| منطقية | and or not | دمج الشروط أو عكس نتيجتها. |
| هوية | is وis not | اختبار ما إذا كان الطرفان الكائن نفسه. |
| عضوية | in وnot in | اختبار وجود عنصر. |
| بت | & | ^ ~ << >> | إجراء عمليات على البتات. |
1. العوامل الحسابية Arithmetic Operators
تُستخدم للجمع والطرح والضرب والقسمة وحساب باقي القسمة والأس. يوضح الجدول النتائج عند استخدام أعداد صحيحة موجبة:
| العامل | الوظيفة | مثال | الناتج |
|---|---|---|---|
+ | جمع | 10 + 5 | 15 |
- | طرح | 10 - 5 | 5 |
* | ضرب | 10 * 5 | 50 |
/ | قسمة عادية | 10 / 5 | 2.0 |
// | قسمة أرضية | 13 // 4 | 3 |
% | باقي القسمة | 13 % 4 | 1 |
** | أس | 2 ** 3 | 8 |
مثال عملي على الحساب
x = 13
y = 4
print(x + y) # 17
print(x / y) # 3.25
print(x // y) # 3
print(x % y) # 1
انتبه للفرق: القسمة باستخدام / تعطي float عند قسمة الأعداد العادية، حتى إن كانت النتيجة 2.0. أما // فتحسب ناتج القسمة بالتقريب نحو السالب اللانهائي، وليس مجرد حذف الأرقام بعد الفاصلة. لذلك:
print(-13 // 4) # -4
print(13 % 4) # 1
ويمكنك تطبيق % في مشروع معرفة هل العدد زوجي أم فردي؛ فباقي القسمة على 2 يوضح إن كان العدد يقبل القسمة عليها دون باقٍ.
2. عوامل الإسناد Assignment
تستخدم = لإسناد قيمة إلى اسم، بينما تجمع صيغ مثل += بين العملية وتحديث المتغير. عبارة x += 3 تشبه x = x + 3 في الأمثلة العددية البسيطة، لكنهما ليستا متطابقتين في جميع حالات الكائنات القابلة للتعديل.
| الرمز | مثال | المعنى المبسط |
|---|---|---|
= | x = 5 | إسناد 5 إلى الاسم x. |
+= | x += 3 | أضف 3 وحدّث x. |
-= | x -= 3 | اطرح 3 وحدّث x. |
*= | x *= 3 | اضرب في 3 وحدّث x. |
/= | x /= 3 | اقسم على 3 وحدّث x. |
points = 10
points += 5
print(points) # 15
points *= 2
print(points) # 30
3. عوامل المقارنة Comparison Operators
تسمح لك بمقارنة قيمتين. في الأمثلة المعتادة على الأرقام والنصوص تحصل على True أو False. انتبه: == للمقارنة، و= للإسناد.
| العامل | الوظيفة | مثال |
|---|---|---|
== | يساوي | 5 == 5 |
!= | لا يساوي | 5 != 3 |
> | أكبر من | 10 > 5 |
< | أصغر من | 3 < 8 |
>= | أكبر من أو يساوي | 7 >= 7 |
<= | أصغر من أو يساوي | 4 <= 9 |
age = 18
print(age >= 18) # True
print(age < 18) # False
ستستخدم هذه المقارنات عندما تتعلم الشروط if وelse في بايثون؛ أما هنا فالمهم فهم القيمة الناتجة عن كل مقارنة.
4. العوامل المنطقية Logical Operators
تساعدك على دمج شروط متعددة: and عندما تحتاج تحقق الشرطين، وor عندما يكفي أحدهما، وnot لعكس نتيجة التحقق.
age = 20
has_id = True
print(age >= 18 and has_id) # True
print(age < 18 or has_id) # True
print(not has_id) # False
هل and وor تعيدان True أو False دائمًا؟
لا. عندما تكون المدخلات شروطًا منطقية مثل المثال السابق تبدو النتائج True أو False، لكن and وor تعيدان إحدى القيم نفسها عند استخدام قيم غير منطقية، وقد تتوقفان عن تقييم الطرف الثاني إذا حُسمت النتيجة. مثال:
username = ""
print(username or "guest") # guest
print(0 and 10) # 0
أما not فيُعيد قيمة منطقية فعلًا. هذا التفصيل ستحتاجه لاحقًا مع الشروط والقيم الفارغة.
5. عوامل الهوية Identity Operators
العاملان is وis not يختبران هوية الكائن، وليس مجرد تساوي القيم. لذلك قد تتساوى قائمتان بمحتواهما مع بقائهما كائنين مستقلين:
x = [1, 2, 3]
y = [1, 2, 3]
z = x
print(x == y) # True
print(x is y) # False
print(x is z) # True
في استخدامك اليومي قارن القيم باستخدام ==، واستخدم is None عندما تريد التحقق من القيمة الخاصة None. للتفصيل راجع الفرق بين == وis في بايثون؛ فهذا المقال المتخصص يشرح مقارنة القيم وهوية الكائنات بعمق أكبر.
6. عوامل العضوية Membership Operators
تستخدم in وnot in لمعرفة وجود قيمة داخل نص أو قائمة أو غيرها من الحاويات المناسبة:
languages = ["Python", "JavaScript", "HTML"]
print("Python" in languages) # True
print("PHP" not in languages) # True
إذا استخدمت in مع قاموس dict فهي تختبر وجود المفتاح افتراضيًا، وليس وجود القيمة. سنفصّل التعامل مع القواميس في درسها المخصص.
7. عوامل البت Bitwise Operators
تجري هذه العوامل عمليات على التمثيل الثنائي للأعداد الصحيحة. يكفي في هذه المرحلة التعرف إلى رموزها؛ لا تحتاج إلى حفظ تطبيقاتها قبل إتقان الأنواع السابقة.
| العامل | المعنى |
|---|---|
& | AND على مستوى البت |
| | OR على مستوى البت |
^ | XOR |
~ | عكس البتات |
<< | إزاحة البتات يسارًا |
>> | إزاحة البتات يمينًا |
print(5 & 3) # 1
أولوية العمليات: لماذا تختلف النتيجة؟
لا تُنفّذ بايثون جميع العوامل وفق ترتيب كتابتها فقط؛ فالضرب له أولوية على الجمع مثلًا. استخدم الأقواس عندما تريد تغيير ترتيب الحساب أو توضيح المقصود:
print(2 + 3 * 4) # 14
print((2 + 3) * 4) # 20
في التعبيرات المنطقية تكون أولوية not أعلى من and، وand أعلى من or. لا تحتاج إلى حفظ جدول الأسبقيات كاملًا الآن؛ الأقواس تجعل الشروط المركبة أكثر وضوحًا.
مثال عملي يجمع عدة أنواع من العوامل
نريد التأكد من أن اسم الطالب موجود في القائمة وأن درجته كافية للنجاح:
students = ["Ali", "Sara", "Omar"]
name = "Sara"
score = 85
is_student = name in students
passed = score >= 50
print(is_student and passed) # True
استخدمنا in للعضوية، و>= للمقارنة، وand لدمج النتيجتين. هذا مثال تمهيدي؛ ستتعلم لاحقًا اتخاذ قرارات مختلفة باستخدام if وelse.
أخطاء شائعة عند تعلم العوامل
- الخلط بين
=و==: الأول إسناد، والثاني مقارنة. - اعتبار
//حذفًا للكسور: مع الأعداد السالبة قد تحصل على نتيجة مختلفة بسبب التقريب نحو السالب اللانهائي. - استخدام
isبدل==لمقارنة قائمتين: الأولى للهوية والثانية للقيم. - الاعتقاد أن
andوorتعيدان قيمتين منطقيتين دائمًا: قد تعيدان إحدى القيم المستخدمة. - نسيان ترتيب الحساب: عند الشك، أضف الأقواس.
تمرين قصير قبل الانتقال للدرس التالي
توقع ناتج الكود التالي ثم شغّله، وحاول تغيير قيمة score لمعرفة تأثير ذلك:
score = 72
print(score >= 50 and score < 90)
print(score % 2 == 0)
الإجابة: True ثم True. المثال الأول يدمج مقارنتين، والثاني يجمع باقي القسمة مع المقارنة.
أسئلة شائعة عن العوامل في بايثون
ما الفرق بين / و// في بايثون؟
/ للقسمة العادية، و// للقسمة الأرضية التي تُقرّب الناتج نحو السالب اللانهائي؛ لذلك انتبه للأعداد السالبة.
ما الفرق بين = و==؟
= علامة إسناد لقيمة متغير، أما == فعامل مقارنة لتساوي القيم.
هل and وor تعيدان True وFalse دائمًا؟
لا. قد تعيدان أحد طرفَي العملية نفسه، بينما يُرجع not قيمة منطقية.
متى أستخدم is بدل ==؟
استخدم == لمقارنة القيم، وis عندما تريد التأكد أن الطرفين يشيران إلى الكائن نفسه؛ ومن الأمثلة الشائعة value is None.
ما الخطوة التالية في كورس أساسيات بايثون؟
بعد فهم العوامل، تابع كورس أساسيات بايثون للوصول إلى الدرس السابع الخاص بأنواع البيانات، ثم دروس الشروط والحلقات. ويمكنك تشغيل أمثلة هذا الدرس في محرر بايثون العرب دون تثبيت محلي.
المصادر الرسمية
- توثيق بايثون: التعبيرات والعوامل وأولوية العمليات
- توثيق بايثون: العوامل المنطقية
- توثيق بايثون: الإسناد المركّب
الخلاصة
تعرفت في الدرس السادس إلى سبعة أنواع من العوامل في بايثون، وكيف تستخدم أهمها في الحساب والإسناد والمقارنة وكتابة الشروط. تذكّر الفرق بين = و==، وبين == وis، وبين / و//. لا تحفظ الرموز وحدها؛ غيّر القيم في الأمثلة وراقب النتائج لتفهم كل عملية.
{alertSuccess}القاعدة العملية: ابدأ بالعوامل الحسابية والإسناد والمقارنة والمنطق، ثم تعلّم الأنواع الأخرى حسب حاجتك.