una separar reemplazar por palabra letras funcion eliminar contar comparar caracteres caracter cadenas cadena python string comparison equality

separar - Comparación de cadenas en Python: es vs.==



reemplazar caracteres en python (4)

Para todos los objetos Python incorporados (como cadenas, listas, dicts, funciones, etc.), si x es y, entonces x == y también es True.

No siempre. NaN es un contraejemplo. Pero usualmente , la identidad ( is ) implica igualdad ( == ). Lo contrario no es cierto: dos objetos distintos pueden tener el mismo valor.

Además, ¿generalmente se considera mejor simplemente usar ''=='' por defecto, incluso cuando se comparan valores int o booleanos?

Se usa == cuando se comparan valores y is cuando se comparan identidades.

Cuando se comparan ints (o tipos inmutables en general), casi siempre se desean los primeros. Hay una optimización que permite comparar los enteros pequeños con, pero no confíe en ella.

Para los valores booleanos, no debería hacer comparaciones en absoluto. En lugar de:

if x == True: # do something

escribir:

if x: # do something

Para comparar con None , se prefiere == None sobre == None .

Siempre me ha gustado usar ''is'' porque me parece más estético y pitón (así es como caí en esta trampa ...), pero me pregunto si está destinado a ser reservado cuando te importa encontrar dos. Objetos con la misma id.

Sí, para eso es exactamente.

Noté que una secuencia de comandos de Python que estaba escribiendo estaba actuando de forma squirrelly, y la rastreé hasta un bucle infinito, donde la condición del bucle era while line is not '''' . Al ejecutarlo en el depurador, resultó que esa línea era en realidad '''' . Cuando lo cambié a !='''' lugar de is not '''' , funcionó bien.

Además, ¿generalmente se considera mejor simplemente usar ''=='' por defecto, incluso cuando se comparan valores int o booleanos? Siempre me ha gustado usar ''is'' porque me parece más estético y pitón (así es como caí en esta trampa ...), pero me pregunto si está destinado a ser reservado cuando te importa encontrar dos. Objetos con la misma id.


La lógica no es defectuosa. La declaración

si x es y, entonces x == y también es verdadero

nunca debe ser leído para significar

si x == y entonces x es y

Es un error lógico por parte del lector suponer que lo contrario de una declaración lógica es cierto. Ver http://en.wikipedia.org/wiki/Converse_(logic)


Me gustaría mostrar un pequeño ejemplo de cómo y == están involucrados en tipos inmutables. Trata eso:

a = 19998989890 b = 19998989889 +1 >>> a is b False >>> a == b True

is compara dos objetos en la memoria, == compara sus valores. Por ejemplo, puede ver que Python almacena en caché los enteros pequeños:

c = 1 b = 1 >>> b is c True

Debe usar == al comparar valores y is al comparar identidades. (Además, desde un punto de vista en inglés, "es igual a" es diferente de "es".)


Ver esta pregunta

Tu logica en la lectura

Para todos los objetos Python incorporados (como cadenas, listas, dictados, funciones, etc.), si x es y, entonces x == y también es True.

es un poco defectuoso

Si is aplica, entonces == será verdadero, pero NO se aplica a la inversa. == puede dar verdadero mientras que is falso.