Курс 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"

  1. Введение в PyTorch
  2. F-строки в Python 3.8
  3. Поиск частых элементов в списке
  4. Работа с датой и временем в Python
  5. Разбиение строки в Python
  6. Эффективная конкатенация строк в Python
  7. Генерация случайных чисел в Python
  8. Печать календаря в Python
  9. Управление пакетами с pip
  10. Создание матрицы в Python
  11. Метод rename() для переименования файлов и каталогов
  12. Отладка кода
  13. Поиск уникальных и повторяющихся элементов
  14. Фильтрация данных в Python.
  15. Метод join() с набором
  16. Переопределение метода divmod
  17. Работа с контекст-менеджером «with»
  18. Операции со строками в Python
  19. Регистрация на TenChat
  20. Обратное распространение ошибки
  21. Передача аргументов в Python
  22. Закрытие файла в Python
  23. Вывод с переменной через запятую
  24. Переопределение метода delitem в Python
  25. Измерение времени выполнения кода в Python
  26. Сравнение объектов в Python
  27. Печать списка с помощью метода join
  28. Работа с timedelta в Python
  29. Множественное наследование в Python
  30. Решение переменной Шредингера
  31. Удаление дубликатов с сохранением порядка с помощью dict.fromkeys
  32. Анализ кода — Python
  33. Работа с комплексными числами в Python
  34. Переопределение метода __eq__
  35. Структура данных deque в Python
  36. Преобразование чисел в Python
  37. Итераторы в Python
  38. Установка и использование Logzero
  39. Определение размера папок в Python
  40. Генерация UUID в Python
  41. Преобразование типов данных в set comprehension
  42. Поток данных в Python
  43. Частичное совпадение пользовательского ввода в Python 3.10
  44. Глубокое копирование объектов
  45. Отладка производительности Python
  46. Игра «Камень, ножницы, бумага» — Python
  47. Управление импортом в Python
  48. Форматирование данных с pprint

Marketello читают маркетологи из крутых компаний