العوامل في بايثون
تشرح هذه المقالة العوامل في بايثون۔
YouTube Video
العوامل في بايثون
تحتوي بايثون على العديد من العوامل، والتي يمكن تصنيفها بشكل عام كما يلي۔ سنشرح العوامل الممثلة لكل فئة۔
العوامل الحسابية
مشغلات الحساب هي مشغلات تُستخدم لإجراء العمليات الحسابية على الأرقام۔
المُعامل | المعنى | المثال |
---|---|---|
+ |
الجمع | 3 + 2 → 5 |
- |
الطرح | 3 - 2 → 1 |
* |
الضرب | 3 * 2 → 6 |
/ |
القسمة (دائمًا عدد عشري) | 3 / 2 → 1.5 |
// |
القسمة الصحيحة | 3 // 2 → 1 |
% |
الباقي (المقسوم عليه أو مودولو) | 3 % 2 → 1 |
** |
الأسس | 3 ** 2 → 9 |
1a = 10
2b = 3
3
4print(f"{a} + {b} = {a + b}") # Addition
5print(f"{a} - {b} = {a - b}") # Subtraction
6print(f"{a} * {b} = {a * b}") # Multiplication
7print(f"{a} / {b} = {a / b}") # Division (float)
8print(f"6 / 3 = {6 / 3}") # Division (float)
9print(f"{a} // {b} = {a // b}") # Floor Division
10print(f"{a} % {b} = {a % b}") # Modulo (remainder)
11print(f"{a} ** {b} = {a ** b}") # Exponentiation
- بالإضافة إلى العمليات الحسابية الأساسية الأربعة، يوفر بايثون عوامل للقسمة (
/
)، القسمة الصحيحة (//
)، باقي القسمة (%
)، والأس (**
)۔ عملية القسمة تعيد عددًا عشريًا حتى عند قسمة أعداد صحيحة۔
مشغّلات الإسناد
تُستخدم معاملات الإسناد لإسناد القيم إلى المتغيرات۔
العامل | المعنى | المثال |
---|---|---|
= |
إسناد القيمة | x = 5 |
+= |
جمع وإسناد | x += 2 → x = x + 2 |
-= |
طرح وإسناد | x -= 2 → x = x - 2 |
*= |
ضرب وإسناد | x *= 2 → x = x * 2 |
/= |
قسمة وإسناد | x /= 2 → x = x / 2 |
//= |
القسمة الصحيحة | x //= 2 → x = x // 2 |
%= |
إسناد الباقي | x %= 2 → x = x % 2 |
**= |
إسناد الأس | x **= 2 → x = x ** 2 |
&= |
تخصيص باستخدام AND | x &= 0b1010 → x = x & 0b1010 |
|= |
تخصيص باستخدام OR | x | = 0b0011 →x = x | 0b0011 |
^= |
تخصيص باستخدام XOR | x ^= 0b0101 → x = x ^ 0b0101 |
<<= |
تخصيص بعد إزاحة لليسار | x <<= 2 → x = x << 2 |
>>= |
تخصيص بعد إزاحة لليمين | x >>= 1 → x = x >> 1 |
:= |
تعبير التخصيص (عامل الفقمة) | if (n := len(data)) > 10: → تخصيص إلى n أثناء تقييم الشرط |
1x = 5 # x = 5
2
3x += 3 # x = x + 3
4x -= 2 # x = x - 2
5x *= 4 # x = x * 4
6x /= 3 # x = x / 3
7x //= 2 # x = x // 2
8x %= 5 # x = x % 5
9x **= 3 # x = x ** 3
10
11x = 0b1100 # x = 0b1100 (12)
12
13x &= 0b1010 # x = x & 0b1010
14x |= 0b0011 # x = x | 0b0011
15x ^= 0b0101 # x = x ^ 0b0101
16x <<= 2 # x = x << 2
17x >>= 1 # x = x >> 1
18
19print(bin(x)) # Display in binary
20print(x) # Display in decimal
21
22# Walrus operator
23if (n := len("hello")) > 3:
24 print(f"Length is {n}")
- تسمح عوامل التخصيص بدمج التخصيص القياسي مع عوامل مختلفة لتعيين النتيجة۔
- عامل الفقمة (
:=
) هو تعبير تخصيص متوفر في بايثون 3.8 والإصدارات الأحدث۔ - بينما يمكن استخدام التخصيص القياسي فقط كجملة، يسمح عامل الفقمة بالتخصيص ضمن تعبير۔
عوامل المقارنة
مشغلات المقارنة تقارن القيم وتعيد True
أو False
۔
المُعامل | المعنى | المثال |
---|---|---|
== |
يساوي | 3 == 3 → True |
!= |
لا يساوي | 3 != 4 → True |
> |
أكبر من | 5 > 2 |
< |
أقل من | 5 < 2 |
>= |
أكبر من أو يساوي | 5 >= 5 |
<= |
أقل من أو يساوي | 3 <= 4 |
1a = 10
2b = 20
3
4# Equal to (==)
5print(f"{a} == {b} -> {a == b}") # False: a and b are not equal
6print(f"3 == 3.0 -> {3 == 3.0}") # True: int and float with the same value are equal
7print(f"3 == '3' -> {3 == '3'}") # False: different types (int vs str)
8print(f"True == 1 -> {True == 1}") # True: True is equivalent to 1
9print(f"False == 0 -> {False == 0}") # True: False is equivalent to 0
10print(f"None == 0 -> {None == 0}") # False: None is not equal to 0
11
12# Not equal to (!=)
13print(f"{a} != {b} -> {a != b}") # True: a and b are not equal
14
15# Greater than (>)
16print(f"{b} > {a} -> {b > a}") # True: 20 > 10
17
18# Less than (<)
19print(f"{a} < {b} -> {a < b}") # True: 10 < 20
20
21# Greater than or equal to (>=)
22print(f"{a} >= 10 -> {a >= 10}") # True: a is greater than or equal to 10
23
24# Less than or equal to (<=)
25print(f"{a} <= 10 -> {a <= 10}") # True: a is less than or equal to 10
- تقوم عوامل المقارنة بمقارنة قيمتين للترتيب أو المساواة وتعيد
True
أوFalse
كنتيجة۔ - في بايثون، يجب أن تكون حذرًا عند مقارنة أنواع بيانات مختلفة۔ بعض الأنواع يمكن مقارنتها ببعضها البعض، ولكن النتائج قد لا تكون بديهية۔
العوامل المنطقية
تُستخدم المشغلات المنطقية لدمج التعبيرات المنطقية۔
المُعامل | المعنى | المثال |
---|---|---|
and |
يُرجع 'True' إذا كان كلا الشرطين صحيحين | True and False → False |
or |
يُرجع 'True' إذا كان أحد الشرطين صحيح | True or False → True |
not |
يعكس قيمة المنطق (Boolean) | not True → False |
1x = 10
2print(x > 5 and x < 20) # True
3print(x < 5 or x > 20) # False
4print(not x == 10) # False
and
هو عامل منطقي يعيدTrue
فقط إذا كان كل من الشرطين على اليسار واليمين صحيحًا۔or
هو عامل منطقي يعيدTrue
إذا كان أي من الشرطين على اليسار أو اليمين صحيحًا۔not
هو عامل منطقي يعكس قيمة الصواب للشرط۔ إذا كانت القيمة صحيحة، تصبح خاطئة، وإذا كانت خاطئة، تصبح صحيحة۔
أفضلية العوامل المنطقية
للعوامل ترتيب أولوية۔ هذه هي القاعدة التي تحدد أي عامل يُقَيَّم أولاً في التعبير۔ يتم تقييم العوامل المنطقية بالترتيب: ليس
، ثم و
، ثم أو
۔
1result = True or False and False
2print(result) # True
3
4result = (True or False) and False
5print(result) # False
たとえば、
في المثال الأول، يُقيّم العامل و
أولاً، لذلك تصبح خطأ و خطأ
تساوي خطأ
، وكنتيجة لذلك، تصبح صح أو خطأ
تساوي صح
۔ يمكنك أيضًا تغيير ترتيب التقييم باستخدام الأقواس، كما هو موضح في المثال الثاني۔
مشغّلات العمليات الثنائية
تنفذ مشغلات البت العمليات على مستوى البتات۔
المُعامل | المعنى | المثال |
---|---|---|
& |
العامل AND على مستوى البت | 5 & 3 → 1 |
| |
العامل OR على مستوى البت | 5 | 3 →7 |
^ |
العامل XOR (أو الحصري) على مستوى البت | 5 ^ 3 → 6 |
~ |
العامل NOT على مستوى البت | ~5 → -6 |
<< |
الإزاحة نحو اليسار | 5 << 1 → 10 |
>> |
الإزاحة نحو اليمين | 5 >> 1 → 2 |
1# Sample code for bitwise operators
2
3# Define two integers
4a = 5 # Binary: 0101
5b = 3 # Binary: 0011
6
7# Bitwise AND
8result_and = a & b # Binary: 0001 -> Decimal: 1
9print(f"{a} & {b} = {result_and}")
10
11# Bitwise OR
12result_or = a | b # Binary: 0111 -> Decimal: 7
13print(f"{a} | {b} = {result_or}")
14
15# Bitwise XOR
16result_xor = a ^ b # Binary: 0110 -> Decimal: 6
17print(f"{a} ^ {b} = {result_xor}")
18
19# Bitwise NOT (inverting bits)
20result_not = ~a # Binary: -(0101 + 1) -> Decimal: -6
21print(f"~{a} = {result_not}")
22
23# Left shift
24shift_left = a << 1 # Binary: 1010 -> Decimal: 10
25print(f"{a} << 1 = {shift_left}")
26
27# Right shift
28shift_right = a >> 1 # Binary: 0010 -> Decimal: 2
29print(f"{a} >> 1 = {shift_right}")
- يمكنك إجراء عمليات AND، OR، XOR، NOT على مستوى البت بالإضافة إلى عمليات إزاحة البت۔ يمكنك أيضًا دمجها مع عوامل التخصيص مثل
&=
۔
مشغّلات العضوية
مشغلات العضوية تُستخدم مع المجموعات مثل القوائم والقواميس۔
1x = [1, 2, 3]
2y = 2
3z = 4
4
5print("y in x : ", y in x) # Result is True
6print("z in x : ", z in x) # Result is False
7
8print("y not in x : ", y not in x) # Result is False
9print("z not in x : ", z not in x) # Result is True
10
11text = "hello world"
12print("'world' in 'hello world' : ", "world" in text) # True
13print("'python' not in 'hello world' : ", "python" not in text) # True
- يُستخدم العامل
in
لتحديد ما إذا كانت قيمة محددة موجودة ضمن تسلسل مثل قائمة أو سلسلة نصية، أو مجموعة مثل القاموس.۔ - يُستخدم العامل
not in
لتحديد ما إذا كانت قيمة محددة غير موجودة ضمن تسلسل أو مجموعة.۔
مشغّلات الهوية
مشغلات الهوية تتحقق من هوية الكائنات۔
1x = [1, 2, 3]
2y = x
3z = x.copy()
4
5print("x is y : ", x is y) # Result is True
6print("x is z : ", x is z) # Result is False
7
8print("x is not y : ", x is not y) # Result is False
9print("x is not z : ", x is not z) # Result is True
10
11print("x == y : ", x == y) # Result is True
12print("x == z : ", x == z) # Result is True
- العامل
is
يتحقق مما إذا كان الكائنان هما نفس الكائن (أي يشيران إلى نفس موقع الذاكرة)۔ - العامل
is not
يتحقق مما إذا كان الكائنان كائنين مختلفين۔ - على سبيل المثال، يختلف
x is y
عنx == y
لأنه يتحقق من هوية الكائن وليس تساوي القيم۔
التحقق من النوع
في بايثون، تستخدم الدالة isinstance()
للتحقق مما إذا كانت القيمة من نوع محدد۔ يمكنك أيضًا استخدام الدالة type()
للتحقق من النوع الدقيق للمتغير۔ على الرغم من أن هذه ليست عوامل تشغيل، إلا أنها آليات أساسية للتحقق من النوع۔
1x = 10
2print(isinstance(x, int)) # True
3
4y = "hello"
5print(isinstance(y, str)) # True
6
7z = [1, 2, 3]
8print(isinstance(z, list)) # True
9
10print(type(10)) # <class 'int'>
11print(type("hello")) # <class 'str'>
12
13print("isinstance(3, int) : ", isinstance(3, int)) # True
14print("type(3) is int : ", type(3) is int) # True
15print("type(True) is bool : ", type(True) is bool) # True
isinstance()
هي دالة تتحقق مما إذا كان الكائن نسخة من فئة معينة أو أحد الفئات الفرعية منها۔type()
هي دالة تعيد النوع (الفئة) الدقيق للكائن۔ يتم استخدامها عادة عندما تريد القيام بمقارنة صارمة للنوع۔isinstance()
يأخذ في الاعتبار علاقات الوراثة، بينماtype()
يتحقق من التطابق التام۔
الملخص
عند استخدام كل مشغّل، تحتاج إلى اختيار الأنسب بناءً على الغرض والنوع الخاص به۔ نظرًا لأن Python لغة تعتمد على الأنواع الديناميكية، فقد يختلف ناتج العملية بناءً على نوع القيم التي يتم حسابها۔
يمكنك متابعة المقالة أعلاه باستخدام Visual Studio Code على قناتنا على YouTube.۔ يرجى التحقق من القناة على YouTube أيضًا.۔