Duplicar posible:
Python '==' vs 'is' comparing strings, 'is' fails sometimes, why?cadenas Python Referencias de
Hola. Tengo una pregunta sobre cómo funciona Python cuando se trata de cómo y cuándo se usan las referencias.
Tengo un ejemplo aquí que entiendo.
a = "cat"
b = a
a is b
True
Esto tiene sentido. Pero aquí viene algo que no entiendo.
a = "cat"
b = "cat"
a is b
True
c = 1.2
d = 1.2
c is d
False
e = "cat"
f = "".join(a)
e is f
False
¿Por qué A es B de vuelta verdad y no C es D? Ambos tipos son inmutables ¿verdad? Y funcionó al usar los números flotantes Solo puedo imaginar que sea algún tipo de optimización, pero estoy feliz por cualquier respuesta.
También probé algunas otras cosas y dieron este resultado:
a = "cat"
b = "c"
c = b+"at"
a is c
False # Why not same as setting c = "cat"
d = "cat"+""
a is d
True # Probably same as setting d = "cat"
e = "c"+"at"
a is e
True # Probably same as setting e = "cat"
supongo que este es el mismo problema aquí, pero ¿por qué no da la verdadera cuando la variable b se utiliza para crear "gato"?
que usar Python 2.5 si que haría cualquier differance
Algún consejo e ideas útiles aquí son apreciados.
Python 2.6 y me estoy poniendo verdadero para 'c is d' en el segundo ejemplo. –