>>> 'hi'.split()[0] is 'hi'
True
>>> 'hi there'.split()[0] is 'hi'
False
>>> 'hi there again'.split()[0] is 'hi'
False
Моя гипотеза:Идентичность галтель шпагатом раскола()
Первая строка содержит только один элемент в расколе, в то время как две другие имеют более чем один элемент. Я считаю, что хотя примитивы Python, такие как str
, хранятся в памяти по значению внутри функции, для упрощения управления памятью будут выполняться отдельные распределения по всем функциям. Я думаю, что split()
является одной из этих функций и обычно выделяет новые строки. Но он также обрабатывает краевой случай ввода, который не требует какого-либо разделения (например, 'hi'
), где исходная ссылка на строку просто возвращается. Правильно ли мое объяснение?
нет и причина в том, что «есть» означает то же место в памяти это не то же самое, что «==» изменить ваши сравнения с ==, и они будут работать нормально, «is» следует использовать только для сравнения элементов, находящихся в статической памяти, таких как None a True/False – gkusner