Курс Python → Оптимизация интернирования строк
Строки в Python могут быть сложными и важно понимать, как работает интерпретатор при работе с ними. Например, когда вы присваиваете значения «wtf!» переменным a и b в одной строке кода, интерпретатор создает новый объект строки «wtf!» и затем обе переменные одновременно ссылаются на этот объект. Однако, если вы сделаете это в отдельных строках, интерпретатор не будет знать, что уже существует объект «wtf!» в памяти, так как строка неявно интернирована, что является оптимизацией во время компиляции.
Оптимизация интернирования строк не применяется к версиям CPython 3.7.x, что важно учитывать при разработке кода. Это может повлиять на производительность программы, особенно если вам нужно много раз создавать и работать с одинаковыми строками. Поэтому, при работе со строками в Python, рекомендуется учитывать особенности интернирования и оптимизации ваших структур данных.
Для примера, рассмотрим код:
a = "wtf!"
b = "wtf!"
print(a is b) # True
В этом примере, переменные a и b ссылаются на один и тот же объект строки «wtf!», поэтому оператор is возвращает True. Однако, если бы мы присвоили значения «wtf!» переменным a и b в отдельных строках, они бы ссылались на разные объекты, и оператор is вернул бы False. Это пример того, как оптимизация интернирования влияет на работу с объектами строк в Python.
Другие уроки курса "Python"
- Аннотации типов в Python
- Работа с типами данных в Python с помощью pydantic.
- Работа с комплексными числами
- Метод rxor для операции побитового исключающего «или»
- Однострочники Python
- Magic Commands — улучшение работы с Python
- Библиотека Emoji: использование смайлов в Python
- Отслеживание выполнения программы с библиотекой tqdm
- Применение функции map() с лямбда-функциями
- Генерация QR-кодов с библиотекой qrcode
- Работа с zip()
- Сортировка данных в Python
- Обработка исключений с блоком else
- Измерение времени выполнения кода
- Метод split() в Python
- Очистка данных с помощью pandas
- Компиляция регулярных выражений
- Подчеркивание в REPL
- Работа с CSV файлами
- Defaultdict в Python
- Операторы присваивания в Python
- Установка и использование emoji
- Создание функций высшего порядка
- Структура данных словарь в Python
- Игра «Угадывание чисел»
- Переопределение метода sub
- Метод ior для битовых операций
- Метод setitem в Python
- Метод __ilshift__ для битового сдвига влево
- Частичное совпадение пользовательского ввода в Python 3.10
- capitalize() — изменение регистра первого символа строки
- Генераторы списков
- Обмен данными с asyncio.Queue
- Очистка входных данных
- Расчет времени выполнения
- Форматирование данных с помощью pprint
- Переопределение метода len
- Тестирование модели в PyTorch
- Генерация тестовых данных с factory_boy
- Удаление файлов в Python
- Выбор редактора кода.
- Именование столбцов в Python с pandas
- Удаление дубликатов из списка с помощью dict.fromkeys
- Namedtuple в Python
- Резервирование символов в Python
- Метод init в Python
- Преобразование строки в число
- Сохранение и загрузка модели в PyTorch















