Articles of igualdad de

Python prueba si una cadena es uno de un determinado conjunto de valores

Estoy aprendiendo python en codecademy y mi tarea actual es esta: Escriba una función, shut_down, que tome un parámetro (puede usar lo que quiera, en este caso, usaríamos s para la cadena). La función shut_down debería devolver “Shutting down …” cuando aparece “Yes” , “yes” o “YES” como argumento, y “Shutdown aborted!” cuando aparece “No” […]

La función `id` en Python 2.7, el operador` is`, la identidad del objeto y los métodos definidos por el usuario

Los resultados del código de abajo en Python 2.7 me parecieron una contradicción. El operador is se supone que trabaja con la identidad del objeto y también lo es el id . Pero sus resultados divergen cuando veo un método definido por el usuario. ¿Porqué es eso? py-mach >>class Hello(object): … def hello(): … pass […]

¿Cuándo usar == y cuándo usar?

Curiosamente: >>> a = 123 >>> b = 123 >>> a is b True >>> a = 123. >>> b = 123. >>> a is b False Parece que a is b siendo más o menos definido como id(a) == id(b) . Es fácil hacer errores de esta manera: basename, ext = os.path.splitext(fname) if ext […]

igualdad de punto flotante en Python y en general

Tengo un código que se comporta de manera diferente dependiendo de si utilizo un diccionario para obtener los factores de conversión o si los uso directamente. El siguiente fragmento de código se imprimirá 1.0 == 1.0 -> False Pero si reemplaza los factors[units_from] con 10.0 y los factors[units_to ] con 1.0 / 2.54 se imprimirá […]

¿Por qué la palabra clave “es” tiene un comportamiento diferente cuando hay un punto en la cadena?

Considere este código: >>> x = “google” >>> x is “google” True >>> x = “google.com” >>> x is “google.com” False >>> ¿Por qué es así? Para asegurarme de que lo anterior sea correcto, acabo de probar Python 2.5.4, 2.6.5, 2.7b2, Python 3.1 en Windows y Python 2.7b1 en Linux. Parece que hay coherencia en […]

Python float equidad equidad

Viendo algún comportamiento inesperado con Python esta noche. ¿Por qué la siguiente impresión es ‘no igual’? num = 1.00 num -= .95 nickel = .05 if nickel != num: print ‘not equal’ else: print ‘equal’

¿Por qué los métodos no tienen igualdad de referencia?

Tuve un error en el que confiaba en que los métodos son iguales entre sí cuando se usa. Resulta que ese no es el caso: >>> class What(object): def meth(self): pass >>> What.meth is What.meth False >>> inst = What() >>> inst.meth is inst.meth False ¿Por qué es ese el caso? Funciona para funciones regulares: […]

Formas elegantes de apoyar la equivalencia (“igualdad”) en las clases de Python

Cuando se escriben clases personalizadas, a menudo es importante permitir la equivalencia por medio de los operadores == y != . En Python, esto es posible implementando los métodos especiales __eq__ y __ne__ , respectivamente. La forma más fácil que he encontrado para hacer esto es el siguiente método: class Foo: def __init__(self, item): self.item […]

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

Noté que una secuencia de comandos de Python que estaba escribiendo estaba actuando de forma squirrelly, y lo 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, de hecho, ” . Cuando lo cambié a !=” lugar […]

¿Por qué la comparación de cadenas usando ‘==’ o ‘es’ produce a veces un resultado diferente?

Tengo un progtwig de Python en el que dos variables se configuran con el valor ‘public’ . En una expresión condicional tengo la comparación var1 is var2 que falla, pero si la cambio a var1 == var2 , devuelve True . Ahora, si abro mi intérprete de Python y hago la misma comparación “is”, tiene […]