1
I know some other operators:
- Greater than:
>
- Less than:
<
- Equality:
==
But the "different" operator, as it is in Python?
1
I know some other operators:
>
<
==
But the "different" operator, as it is in Python?
23
As with most languages, the difference operator in Python is !=
. Remember that it compares only the value between the operands and not their identities.
a = 2
b = 3
if a != b:
print('a é diferente de b')
else:
print('a é igual a b')
In advance, the operator !=
implicitly invokes the method __ne__
of the first operand, passing the second as parameter, so if you need to override such operator in a class, you can do:
class Foo:
def __init__(self, value):
self.value = value
def __ne__(self, other):
return self.value != other.value
f1 = Foo(1)
f2 = Foo(1)
print(f1 != f2) # False
Without overloading the method, the result would be True
, indicating that the objects are different, even though they appear to be the same.
The operator is
(or is not
) checks the identity of objects and not only their values. This is evident, for now, when worked with changeable types:
a = [1]
b = [1]
print(a != b) # False
print(a is not b) # True
The lists a
and b
have the same value, but are not the same object.
Additional readings
Other existing operators in the language are:
Addition, a + b
, when a
and b
are numerical;
>>> 1 + 2
3
Concatenation, a + b
, when a
and b
are sequences;
>>> 'Anderson' + ' ' + 'Woss'
'Anderson Woss'
>>> [1, 2] + [3, 4]
[1, 2, 3, 4]
Containment, a in b
;
>>> 1 in [1, 2, 3, 4]
True
True division, a / b
, which returns the actual result;
>>> 5/2
2.5
Division with truncation, a // b
, that returns only the entire part;
>>> 5//2
2
And binary, a & b
;
>>> 1 & 3
1
OR binary exclusive, a ^ b
;
>>> 1 ^ 2
3
Binary inversion, ~a
;
>>> ~2
-3
OR binary, a | b
;
>>> 1 | 2
3
Exponentiation, a**b
;
>>> 2**10
1024
Identity, a is b
;
>>> 1 is None
False
Identity, a is not b
;
>>> 1 is not None
True
Indexing, obj[k]
;
>>> obj = [1, 2, 3]
>>> obj[1]
2
Index assignment, obj[k] = v
;
>>> obj = [1, 2, 3]
>>> obj[2] = 4
>>> obj
[1, 2, 4]
Exclusion by index, del obj[k]
;
>>> obj = [1, 2, 3]
>>> del obj[1]
>>> obj
[1, 3]
Torque displacement to left, a << b
;
>>> 4 << 1
8
Right torque displacement, a >> b
;
>>> 4 >> 1
2
Division rest, a % b
;
>>> 5 % 2
1
Multiplication, a * b
;
>>> 2 * 3
6
Matrix multiplication, a @ b
(versions 3.5+);
See PEP 465;
Arithmetic negation, -a
;
>>> -4
-4
Logical denial, not a
;
>>> not True
False
Positive, +a
;
>>> +4
4
Slicing, seq[i:j]
;
>>> obj = [1, 2, 3, 4, 5]
>>> obj[1:3]
[2, 3]
Slice assignment, seq[i:j] = values
;
>>> obj = [1, 2, 3, 4, 5]
>>> obj[1:3] = [8, 9]
>>> obj
[1, 8, 9, 4, 5]
Foreclosure, del seq[i:j]
;
>>> obj = [1, 2, 3, 4, 5]
>>> del obj[1:3]
>>> obj
[1, 4, 5]
Formatting of string, s % obj
(prefer method format
or f-strings);
>>> 'Olá, %s' % 'mundo'
'Olá, mundo'
Subtraction, a - b
;
>>> 3 - 1
2
Test of truth, if obj: ...
;
>>> obj = 3
>>> if obj: print('Ok')
'Ok'
Less than, a < b
;
>>> 1 < 2
True
Less than or equal to, a <= b
;
>>> 1 <= 2
True
Greater than, a > b
;
>>> 1 > 2
False
Greater than or equal to, a >= b
;
>>> 1 >= 2
False
Enter, not including, a < v < b
;
>>> v = 5
>>> 1 < v < 9
True
Between, inclusive, a <= v <= b
;
>>> v = 5
>>> 1 <= v <= 9
True
Equality, a == b
;
>>> 1 == 2
False
Difference, a != b
;
>>> 1 != 2
True
Difference, a <> b
(obsolete as of version 2.5, removed in versions 3+);
>>> 1 <> 2
True
Further information can be found on official documentation.
-6
In Python you could use Different "!=" or Not "is not"
if "Foo" != "Bar":
return "Diferente"
if "Foo" is not "Bar":
return "Diferente"
!=
and is not
are completely different things.
Browser other questions tagged python python-3.x
You are not signed in. Login or sign up in order to post.
https://stackoverflow.com/a/11060508/4312593
– Netinho Santos
I got it sorted, thank you!
– Nielsen Rick
@Leocaracciolo only in versions 2+, but was removed in versions 3+
– Woss
@Andersoncarloswoss, good to know!! Updated me
– user60252