"/a" is not "/a" ?
gagsl-py2 at yahoo.com.ar
Sat Mar 7 00:49:50 CET 2009
En Fri, 06 Mar 2009 19:31:02 -0200, Emanuele D'Arrigo <manu3d at gmail.com>
>>>> a = "a"
>>>> b = "a"
>>>> a is b
>>>> a = "/a" <- same as above, except the forward slashes!
>>>> b = "/a" <- same as above, except the forward slashes!
>>>> a is b
> So, it appears that in the first case a and b are names to the same
> string object, while in the second case they are to two separate
> objects. Why? What's so special about the forward slash that cause the
> two "/a" strings to create two separate objects? Is this an
> implementation-specific issue?
With all the answers you got, I hope you now understand that you put the
question backwards: it's not "why aren't a and b the very same object in
the second case?" but "why are they the same object in the first case?".
Two separate expressions, involving two separate literals, don't *have* to
evaluate as the same object. Only because strings are immutable the
interpreter *may* choose to re-use the same string. But Python would still
be Python even if all those strings were separate objects (although it
would perform a lot slower!)
More information about the Python-list