El operador de desigualdad de Python retorna Truesi dos variables son del mismo tipo y tienen valores diferentes . Si los valores son iguales, retorna False. Python es un lenguaje dinámico y fuertemente tipado, por lo que si dos variables tienen los mismos valores pero son de diferente tipo, el operador de desigualdad retornará True.
Operadores no iguales en Python
| Operador | Descripción |
|---|---|
| != | El operador No es igual, funciona tanto en Python 2 como en Python 3. |
| Operador no igual en Python 2, obsoleto en Python 3. |
Ejemplo de Python 2
Veamos algunos ejemplos del operador desigual en Python 2.7.
$ python2.7Python 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 darwinType "help", "copyright", "credits" or "license" for more information. 10 20True 10 10False 10 != 20True 10 != 10False '10' != 10True
Ejemplo de Python 3
Aquí hay algunos ejemplos con la consola Python 3.
$ python3.7Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 26 2018, 23:26:24) [Clang 6.0 (clang-600.0.57)] on darwinType "help", "copyright", "credits" or "license" for more information. 10 20 File "stdin", line 1 10 20 ^SyntaxError: invalid syntax 10 != 20True 10 != 10False '10' != 10True
También podemos usar el operador desigual de Python con cadenas f si estás usando Python 3.6 o una versión superior.
x = 10y = 10z = 20print(f'x is not equal to y = {x!=y}')flag = x != zprint(f'x is not equal to z = {flag}')# python is strongly typed languages = '10'print(f'x is not equal to s = {x!=s}')
Producción:
x is not equal to y = Falsex is not equal to z = Truex is not equal to s = True
Python no es igual a un objeto personalizado
Cuando usamos el operador de desigualdad, se llama a __ne__(self, other)una función. De esta manera, podemos definir nuestra implementación personalizada para un objeto y modificar la salida natural. Digamos que tenemos Datauna clase con los campos id y record. Cuando usamos el operador de desigualdad, solo queremos compararla para obtener el valor del registro. Podemos lograr esto implementando nuestra propia función __ne__().
class Data: id = 0 record = '' def __init__(self, i, s): self.id = i self.record = s def __ne__(self, other): # return true if different types if type(other) != type(self): return True if self.record != other.record: return True else: return Falsed1 = Data(1, 'Java')d2 = Data(2, 'Java')d3 = Data(3, 'Python')print(d1 != d2)print(d2 != d3)
Producción:
FalseTrue
Tenga en cuenta que los valores de los registros d1 y d2 son los mismos, pero el “id” es diferente. Si eliminamos la función __ne__(), el resultado será el siguiente:
TrueTrue
Puede consultar el script de Python completo y más ejemplos de Python en nuestro repositorio de GitHub .