Курс 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. Основы работы со строками в Python
  2. Сортировка элементов в Python
  3. Список и кортеж в Python
  4. Функции map, filter, reduce
  5. Оптимизация создания строк
  6. Оптимизация памяти с помощью __slots__
  7. Копирование объектов в Python
  8. Проверка элементов списка условием
  9. Стать Python-разработчиком
  10. Переименование файлов в Python
  11. Экспорт данных с помощью writefile
  12. Измерение времени выполнения кода
  13. Замена подстроки
  14. Применение функции к элементам списка
  15. Добавление Progressbar в Python
  16. Подробная информация о %pinfo
  17. Метод pos в Python
  18. Измерение времени выполнения кода с использованием time
  19. Работа с контекстным менеджером Pool
  20. Генераторы в Python
  21. Создание и операции с дробями
  22. Генераторы в Python
  23. Numpy: объединение массивов
  24. Игра «Виселица» на Python
  25. Работа с изменяемыми коллекциями
  26. Генераторы списков
  27. Удаление дубликатов из списка с помощью dict.fromkeys
  28. Создание OrderedDict
  29. Переворот последовательности
  30. Просмотр атрибутов и методов класса
  31. Методы в Python
  32. Секреты Python
  33. Переопределение метода __rshift__
  34. Поиск индексов в списке
  35. Декораторы в Python
  36. Выход из профиля в Django
  37. Измерение времени выполнения кода с помощью time
  38. Создание вложенных циклов for
  39. Разделение строки с помощью re.split()
  40. Генерация UUID в Python
  41. F-строки в Python 3.8
  42. Оператор «not» в Python
  43. Принципы программирования
  44. Фильтрация последовательности
  45. Управление контекстом с помощью декоратора contextmanager
  46. Модуль math: основные функции
  47. Преобразование в float

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