Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг
07 Июл 2023
2 мин
196

Почему использование [] быстрее, чем list() в Python?

Бывают ситуации, когда необходимо создать пустой список или словарь в Python. На первый взгляд, кажется, что это можно сделать двумя равнозначными способами:

Бывают ситуации, когда необходимо создать пустой список или словарь в Python. На первый взгляд, кажется, что это можно сделать двумя равнозначными способами: использовать литерал (т.е. [] для списка или {} для словаря) или же вызвать соответствующую функцию (list() или dict()).

Однако, если сравнить время выполнения этих двух методов, можно увидеть, что использование литералов выполняется значительно быстрее. Например, создание списка с помощью [] в три раза быстрее, чем с помощью list(). И аналогичная ситуация с созданием словаря: {} быстрее, чем dict().

Это может вызвать вопросы, ведь оба способа кажутся взаимозаменяемыми. Но на самом деле, разница в скорости обусловлена особенностями работы интерпретатора Python.

Когда интерпретатор видит [] или {}, он немедленно создает новый пустой список или словарь. Однако, когда он видит list() или dict(), происходит следующее:

  1. Интерпретатор ищет в своей таблице имен функцию с указанным именем.
  2. Он вызывает найденную функцию.
  3. Функция возвращает новый пустой список или словарь.

Как видно, во втором случае процесс создания объекта включает в себя дополнительные шаги, что и приводит к увеличению времени выполнения.

Это не значит, что использование функций list() и dict() — это плохой стиль. Наоборот, в некоторых случаях они могут быть предпочтительнее, так как позволяют явно указать тип создаваемого объекта, что может улучшить читаемость кода. Однако, если важна максимальная производительность, то следует отдавать предпочтение литералам.

Добавить комментарий