عامل “لا يساوي” في لغة البرمجة Python

المشغل “لا يساوي” في بايثون يعيد `True` إذا كانت المتغيرات اثنان من نفس النوع ولها قيم مختلفة، إذا كانت القيم متطابقة فإنه يعيد `False`. بايثون لغة ديناميكية ومن نوع البيانات القوي، لذا إذا كانت لدى المتغيرات قيم متطابقة ولكنها من أنواع مختلفة، فإن المشغل “لا يساوي” سيعيد `True`.

مشغلات “لا يساوي” في بايثون

Operator Description
!= Not Equal operator, works in both Python 2 and Python 3.
<> Not equal operator in Python 2, deprecated in Python 3.

مثال بايثون 2

دعنا نرى بعض الأمثلة على المشغل “لا يساوي” في بايثون 2.7.

$ python2.7
Python 2.7.10 (default, Aug 17 2018, 19:45:58) 
[GCC 4.2.1 Compatible Apple LLVM 10.0.0 (clang-1000.0.42)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 10 <> 20
True
>>> 10 <> 10
False
>>> 10 != 20
True
>>> 10 != 10
False
>>> '10' != 10
True
>>> 

مثال بايثون 3

إليك بعض الأمثلة باستخدام وحدة التحكم Python 3.

$ python3.7
Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 26 2018, 23:26:24) 
[Clang 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 10 <> 20
  File "<stdin>", line 1
    10 <> 20
        ^
SyntaxError: invalid syntax
>>> 10 != 20
True
>>> 10 != 10
False
>>> '10' != 10
True
>>> 

يمكننا استخدام المشغل “لا يساوي” في بايثون مع سلاسل النصوص المُحسَّنة (f-strings) إذا كنت تستخدم Python 3.6 أو أحدث.

x = 10
y = 10
z = 20

print(f'x is not equal to y = {x!=y}')

flag = x != z
print(f'x is not equal to z = {flag}')

# python is strongly typed language
s = '10'
print(f'x is not equal to s = {x!=s}')

الناتج:

x is not equal to y = False
x is not equal to z = True
x is not equal to s = True

بايثون لا يتساوى مع كائن مخصص

عند استخدام مشغل الغير يساوي، يتم استدعاء دالة __ne__(self, other). لذلك يمكننا تعريف تنفيذ مخصص لكائن وتعديل الناتج الطبيعي. لنفترض أن لدينا صنف Data بحقول – id و record. عند استخدام مشغل الغير يساوي، نريد فقط مقارنته بقيمة السجل. يمكننا تحقيق ذلك عن طريق تنفيذ دالة __ne__() الخاصة بنا.

class Data:
    id = 0
    record = ''

    def __init__(self, i, s):
        self.id = i
        self.record = s

    def __ne__(self, other):
        # إرجاع صحيح إذا كانت الأنواع مختلفة
        if type(other) != type(self):
            return True
        if self.record != other.record:
            return True
        else:
            return False


d1 = Data(1, 'Java')
d2 = Data(2, 'Java')
d3 = Data(3, 'Python')

print(d1 != d2)
print(d2 != d3)

الناتج:

False
True

لاحظ أن قيم سجلات d1 و d2 متطابقة لكن “id” مختلف. إذا قمنا بإزالة دالة __ne__()، سيكون الناتج كما يلي:

True
True

يمكنك مراجعة النص البرمجي الكامل لبايثون وأمثلة أخرى على بايثون من مستودعنا في مستودع جيتهاب الخاص بنا.

Source:
https://www.digitalocean.com/community/tutorials/python-not-equal-operator