Курс 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. Основы слова
  2. Метод Event.wait() в Python
  3. Удаление элемента из списка
  4. Отображение HTML кода в Python
  5. Вывод символов строки в Python
  6. Нан-рефлексивность в Python
  7. Создание и использование ChainMap
  8. Управление виртуальными средами в Python
  9. ROT13 Шифр Цезаря в Python
  10. Создание итерируемых объектов
  11. Codecademy в Telegram
  12. Бинарный поиск
  13. Обмен значений переменных в Python
  14. Работа с f-строками 2.0
  15. Модуль os: работа с файлами и папками
  16. Логирование в Python
  17. Работа с deque из collections
  18. Изменение переменной в Python: nonlocal
  19. Numpy: разбиение массивов
  20. ChainMap.new_child() — добавление нового словаря
  21. Генераторы данных
  22. История Python
  23. Метод __complex__ в Python
  24. Установка и использование модуля Wikipedia
  25. Добавление элементов в список: append() vs extend()
  26. Функция zip() в Python
  27. Измерение времени выполнения кода с помощью time
  28. Метод join() с набором
  29. Оператор += в Python
  30. Модуль subprocess: запуск внешних команд
  31. Оператор in в Python
  32. Метод get() в Python
  33. Логические значения в Python
  34. Скрытие вывода данных
  35. Генераторы в Python
  36. Декоратор total_ordering для класса Point
  37. Основы работы со строками в Python
  38. Логический оператор «and» в Python
  39. Работа с множествами в Python
  40. Генераторы в Python
  41. GitHub в Telegram: подписка на уведомления
  42. Метод join() для объединения элементов строки
  43. Counter() — подсчет элементов
  44. Декоратор @override
  45. Работа с файлами и директориями в Python.
  46. Создание даты из строки ISO
  47. Декораторы в Python
  48. Подписка на SelectelNews в Twitter

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