Сайт, который вы цитируете, говорит об этом:
Если два строковых литерала равны, они помещаются в одну и ту же область памяти.
Но
uSplit('theuser!host')
не строковый литерал - это результат операции над литералом 'theuser!host'
.
В любом случае, вам обычно не следует проверять равенство строк, используя is
, потому что эта оптимизация памяти в любом случае является лишь деталью реализации, на которую не следует полагаться.
Кроме того, вы должны использовать is
для таких вещей, как is None
. Используйте его для проверки того, являются ли два объекта - классов, которые вы разработали, - одним и тем же экземпляром. Вы не можете легко использовать его для строк или чисел, потому что правила для создания этих встроенных классов сложны. Некоторые строки интернированы. Некоторые цифры, аналогично, интернированы.