القائمة الرئيسية

الصفحات

 

 شاركنا بعملوماتك

#عائله بايثون

مفهوم العوامل

العوامل operators ) عبارة عن رموز لها معنى محدد و يمكننا تقسيمها إلى 7 مجموعات أساسية هي:

  • Arithmetic Operators
  • Comparison Operators
  • Logical Operators
  • Bitwise Operators
  • Assignment Operators
  • Membership Operators
  • Identity Operators

العوامل التي تستخدم في العمليات الحسابية (Arithmetic Operators)

إسم العاملرمزهمثالشرح الكود
Assignment
=
a = b
أعطي 
a
 قيمة 
b
Addition
+
a + b
أضف قيمة 
b
 على قيمة 
a
Subtraction
-
a - b
إطرح قيمة 
b
 من قيمة 
a
Unary plus
+
+a
أضرب قيمة 
a
 بالعامل 
+
Unary minus
-
-a
أضرب قيمة 
a
 بالعامل 
-
Multiplication
*
a * b
أضرب قيمة 
a
 بقيمة 
b
Exponent
**
a ** b
ضاعف قيمة 
a
 بقيمة 
b
Division
/
a / b
أقسم قيمة 
a
 على قيمة 
b
Floor Divide
//
a // b
أقسم قيمة 
a
 على قيمة 
b
 و أرجع أقرب عدد صحيح للناتج لا يحتوي على فاصلة.
Modulo
%
a % b
للحصول على آخر رقم يبقى عندما نقسم قيمة 
a
 على قيمة 
b

هنا وضعنا مثال لكل عامل موجود في الجدول شاهد الأمثلة »

العوامل التي تستخدم في المقارنات (Comparison Operators)

إسم العاملرمزهمثالشرح الكود
Equal to
==
(a == b)
هل قيمة 
a
 تساوي قيمة 
b
 ؟
إذا كان الجواب نعم فإنها ترجع 
True
Not equal to
!=
(a != b)
هل قيمة 
a
 لا تساوي قيمة 
b
 ؟
إذا كان الجواب نعم فإنها ترجع 
True
Greater than
>
(a > b)
هل قيمة 
a
 أكبر من قيمة 
b
 ؟
إذا كان الجواب نعم فإنها ترجع 
True
Less than
<
(a < b)
هل قيمة 
a
 أصغر من قيمة 
b
 ؟
إذا كان الجواب نعم فإنها ترجع 
True
Greater than
or Equal to
>=
(a >= b)
هل قيمة 
a
 أكبر أو تساوي قيمة 
b
 ؟
إذا كان الجواب نعم فإنها ترجع 
True
Less than
or Equal to
<=
(a <= b)
هل قيمة 
a
 أصغر أو تساوي قيمة 
b
 ؟
إذا كان الجواب نعم فإنها ترجع 
True

هنا وضعنا مثال لكل عامل موجود في الجدول شاهد الأمثلة »

العوامل التي تستخدم في وضع شروط منطقية (Logical Operators)

إسم العاملرمزهمثالشرح الكود
Logical AND
and
a and b
هل قيمة 
a
 و 
b
 تساويان 
True
 ؟
هنا يجب أن يتم تحقيق الشرطين ليرجع 
True
Logical OR
or
a or b
هل قيمة 
a
 أو 
b
 أو كلاهما تساويان 
True
 ؟
هنا يكفي أن يتم تحقيق شرط واحد من الشرطين ليرجع 
True
Logical NOT
not
not a
هل قيمة 
a
 لا تساوي 
True
 ؟
إذا كان الجواب نعم فإنها ترجع 
True

هنا وضعنا مثال لكل عامل موجود في الجدول شاهد الأمثلة »

العوامل التي تستخدم للتعامل مع البتات (Bitwise Operators)

إسم العاملرمزهمثالشرح الكود
Bitwise AND
&
a & b
العامل 
&
 يحسب ناتج جمع الـ bits المشتركة بين 
a
 و 
b
Bitwise OR
|
a | b
العامل 
|
 يحسب ناتج جمع الـ bits المشتركة و الغير مشتركة بين 
a
 و 
b
Bitwise XOR
^
a ^ b
العامل 
^
 يحسب ناتج جمع الـ bits الغير مشتركة بين 
a
 و 
b
Bitwise compliment OR
~
~a
العامل 
~
 يقلب الـ bits التي تساوي 0 إلى 1 و يقلب الـ bits التي تساوي 1 إلى 0,
ثم يضيف عليهم 1 و يحسب ناتج جمعهم, بعدها يضرب الجواب بالعامل 
-
 )
 ثم يعطينا جواب سلبي.
Left shift
<<
a << 2
العامل 
<<
 يزيح الـ bits من آخر اليسار إلى أول اليمين.
العدد 2 يعني أننا سنزيح آخر إثنين bits و نضعهم في الأول.
Right shift
>>
a >> 2
العامل 
>>
 يزيح الـ bits من أول اليمين إلى آخر اليسار.
العدد 2 يعني أننا سنزيح أول إثنين bits و نضعهم في الأخير.

هنا وضعنا مثال لكل عامل موجود في الجدول شاهد الأمثلة »

العوامل التي تستخدم لإعطاء قيم للمتغيرات (Assignment Operators)

إسم العاملرمزهمثالشرح الكود
Basic Assignment
=
a = b
ضع قيمة 
b
 في 
a
.
Add AND Assignment
+=
a += b
أضف قيمة 
a
 على قيمة 
b
 و خزن الناتج في 
a
Susbtract AND Assignment
-=
a -= b
أنقص قيمة 
a
 من قيمة 
b
 و خزن الناتج في 
a
Multiply AND Assignment
*=
a *= b
أضرب قيمة 
a
 بقيمة 
b
 و خزن الناتج في 
a
Exponent AND Assignment
**=
a **= b
ضاعف قيمة 
a
 بقيمة 
b
 و خزن الناتج في 
a
Divide AND Assignment
/=
a /= b
أقسم قيمة 
a
 على قيمة 
b
 و خزن الناتج في 
a
Floor Divide AND Assignment
//=
a //= b
أقسم قيمة 
a
 على قيمة 
b
 و أرجع أقرب عدد صحيح للناتج
Modulo AND Assignment
%=
a %= b
أقسم قيمة 
a
 على قيمة 
b
 و خزن آخر رقم يبقى من عملية القسمة في 
a
Left shift AND Assignment
<<=
a <<= 2
أزح آخر إثنين bits و ضعهم في الأول ثم خزن الناتج في 
a
Right shift AND Assignment
>>=
a >>= 2
أزح أول اثنين bits و ضعهم في الآخر ثم خزن الناتج في 
a
Bitwise AND Assignment
&=
a &= b
أحسب ناتج جمع الـ bits المشتركة بين 
a
 و 
b
 و خزن الناتج في 
a
Bitwise exclusive OR and Assignment
^=
a ^= b
أحسب ناتج جمع الـ bits الغير مشتركة بين 
a
 و 
b
 و خزن الناتج في 
a
Bitwise inexclusive OR and Assignment
|=
a |= b
أحسب ناتج جمع الـ bits المشتركة و الغير مشتركة بين 
a
 و 
b
 و خزن الناتج في 
a

هنا وضعنا مثال لكل عامل موجود في الجدول شاهد الأمثلة »

العوامل التي تستخدم للبحث في المصفوفات (Membership Operators)

إسم العاملرمزهمثالشرح الكود
In
in
a in arr
هل قيمة المتغير 
a
 موجودة في المصفوفة 
arr
؟
إذا كان الجواب نعم فإنها ترجع 
True
Not In
not in
a not in arr
هل قيمة المتغير 
a
 غير موجودة في المصفوفة 
arr
؟
إذا كان الجواب نعم فإنها ترجع 
True

هنا وضعنا مثال لكل عامل موجود في الجدول شاهد الأمثلة »

العوامل التي تستخدم لمعرفة ما إذا كان الكائنين يشيران لكائن واحد في الذاكرة أم لا (Identity Operators)

إسم العاملرمزهمثالشرح الكود
Is
is
a is b
هل الكائن 
a
 و الكائن 
b
 يشيران إلى كائن واحد في الذاكرة؟
إذا كان الجواب نعم فإنها ترجع 
True
Is Not
is not
a is not b
هل الكائن 
a
 و الكائن 
b
 لا يشيران إلى كائن واحد في الذاكرة؟
إذا كان الجواب نعم فإنها ترجع 
True

هنا وضعنا مثال لكل عامل موجود في الجدول

العوامل التي تستخدم لمعرفة ما إذا كان الكائنين يشيران لكائن واحد في الذاكرة أم لا

  • طريقة معرفة عنوان المتغير أو الكائن في الذاكرة
  • العامل 
    is
     (Is Operator)
  • العامل 
    is not
     (Is Not Operator)

طريقة معرفة عنوان المتغير أو الكائن في الذاكرة

لمعرفة المكان أو العنوان المحجوز في الذاكرة لأي شيء تم تعريفه يمكنك إستخدام الدالة 

id()
.
بكل بساطة قم بوضع إسم أي متغير أو كائن بداخلها و سترجع لك عدد صحيح يمثل عنوانه في الذاكرة.


المثال الأول

Test.py
# هنا قمنا بتعريف متغيران عندهم قيم مختلفة
x = 3
y = 7
# هنا قمنا بطباعة عناوينهم في الذاكرة
print('x address is:', id(x))
print('y address is:', id(y))

سنحصل على نتيجة تشبه النتيجة التالية عند التشغيل.

x address is: 1537266768
y address is: 1537266832

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

x
 مختلف عن عنوان المتغير 
y
 و بالتالي هذا يعني أنه تم حجز مساحة خاصة لكل واحد منهما و أنهما يشيران لمكانين مختلفين في الذاكرة.


ملاحظة

في حال قمت بتعريف متغيران أو أكثر و أعطيتهم نفس القيمة, فإن مفسّر لغة بايثون سيحجز مكان واحد لهم و يضع فيه القيمة حتى يوّفر في استهلاك مساحة الذاكرة.


المثال الثاني

Test.py
# هنا قمنا بتعريف متغيران عندهم قيم مختلفة
x = 5
y = 5
# هنا قمنا بطباعة عناوينهم في الذاكرة
print('x address is:', id(x))
print('y address is:', id(y))

سنحصل على نتيجة تشبه النتيجة التالية عند التشغيل.

x address is: 1833030700
y address is: 1833030700

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

x
 هو نفسه عن عنوان المتغير 
y
 و بالتالي هذا يعني أنه تم حجز مساحة واحدة لكلا المتغيرين و أنهما يشيران إلى نفس المكان في الذاكرة.

العامل 
is
 (Is Operator)

العامل 

is
 يستخدم لمعرفة ما إذا كان الكائنين يشيران لكائن واحد في الذاكرة أم لا.

  • إذا كانا يشيران لنفس الكائن فإنه يرجع الجواب 
    True
    .
  • إذا كانا لا يشيران لنفس الكائن فإنه يرجع الجواب 
    False
    .

مثال

Test.py
# هنا قمنا بتعريف مصفوفتين عندهما نفس الحجم و وضعنا فيهما نفس القيم
A = [1, 2, 3]
B = [1, 2, 3]
# في الذاكرة B و A هنا قمنا بطباعة عنوان المصفوفتان
print('A address is:', id(A))
print('B address is:', id(B))
# يشيران لكائن واحد في الذاكرة ( أي لعنوان واحد ) سيتم تنفيذ أمر الطباعة B و A إذا كان
if A is B:
print('A and B have the same ID')

سنحصل على نتيجة تشبه النتيجة التالية عند التشغيل.

A address is: 36662848
B address is: 36563624

نلاحظ أن عنوان المصفوفة 

A
 مختلف عن عنوان المصفوفة 
B
 و بالتالي إنهما لا يشيران لمكان واحد في الذاكرة.
لهذا السبب لم يتم تنفيذ أمر الطباعة الأخير الموضوع داخل الشرط و الذي كان سيتنفذ في حال كان 
A
 و 
B
 يشيران لنفس المصفوفة في الذاكرة.

العامل 
is not
 (Is Not Operator)

العامل 

is not
 يستخدم لمعرفة ما إذا كان الكائنين لا يشيران لكائن واحد في الذاكرة أم لا.

  • إذا كانا لا يشيران لنفس الكائن فإنه يرجع الجواب 
    True
    .
  • إذا كانا يشيران لنفس الكائن فإنه يرجع الجواب 
    False
    .

مثال

Test.py
# هنا قمنا بتعريف مصفوفتين عندهما نفس الحجم و وضعنا فيهما نفس القيم
A = [1, 2, 3]
B = [1, 2, 3]
# في الذاكرة B و A هنا قمنا بطباعة عنوان المصفوفتان
print('A address is:', id(A))
print('B address is:', id(B))
# لا يشيران لكائن واحد في الذاكرة ( أي لعنوان واحد ) سيتم تنفيذ أمر الطباعة B و A إذا كان
if A is not B:
print('A and B have different IDs')

سنحصل على نتيجة تشبه النتيجة التالية عند التشغيل.

A address is: 5992000
B address is: 5892776
A and B have different IDs

نلاحظ أن عنوان المصفوفة 

A
 مختلف عن عنوان المصفوفة 
B
 و بالتالي إنهما لا يشيران لمكان واحد في الذاكرة.
لهذا السبب تم تنفيذ أمر الطباعة الأخير الموضوع داخل الشرط.

تعليقات