On Fri, Nov 3, 2017 at 8:24 PM, Ali Rıza KELEŞ <ali.r.ke...@gmail.com> wrote: > Hi, > > Yesterday, while working with redis, i encountered a strange case. > > I want to ask why is the following `True` > > ``` > "s" is b"s".decode() > ``` > > while the followings are `False`? > > ``` > "so" is b"so".decode() > "som" is b"som".decode() > "some" is b"some".decode() > ``` > > Or vice versa? > > I read that `is` compares same objects, not values. So my question is > why "s" and b"s".decode() are same objects, while the others aren't? > > My python version is 3.6.3.
You shouldn't be comparing string objects with 'is'. Sometimes two equal strings will be identical, and sometimes they won't. All you're seeing is that the interpreter happened to notice and/or cache this particular lookup. ChrisA -- https://mail.python.org/mailman/listinfo/python-list