Питон делает секцию по ссылке на строки?
Я хочу знать, если когда я делаю что-то вроде
a = "This could be a very large string..."
b = a[:10]
создается новая строка или возвращается представление / итератор
2 ответа
Python выполняет слайс-копирование, то есть каждый раз, когда вы ломаете (за исключением очень тривиальных слайсов, таких как a[:]
), он копирует все данные в новый строковый объект.
По словам одного из разработчиков, этот выбор был сделан из-за
Подход [слайс-по-ссылке] сложнее, сложнее в реализации и может привести к неожиданному поведению.
Например:
a = "длинная строка с 500 000 символов..." b = a[0] дель аС дизайном фрагмента как копии строка
a
немедленно освобождается. Проект среза в качестве ссылки сохранит в памяти строку размером 500 КБ, хотя вас интересует только первый символ.
По-видимому, если вам абсолютно необходим просмотр строки, вы можете использовать memoryview
объект.
Когда вы разрезаете строки, они возвращают новый экземпляр String. Строки являются неизменяемыми объектами.