Есть ли в Python статические объекты, объекты стека и объекты кучи?

С прагматики языка программирования, Скотт

Время жизни объекта обычно соответствует одному из трех основных механизмов распределения памяти, используемых для управления пространством объекта:

  1. Статическим объектам присваивается абсолютный адрес, который сохраняется на протяжении всего выполнения программы.

  2. Стековые объекты распределяются и освобождаются в порядке "последний пришел - первый вышел", обычно в сочетании с вызовами и возвратами подпрограмм.

  3. Объекты кучи могут быть выделены и освобождены в произвольные моменты времени. Они требуют более общего (и дорогого) алгоритма управления хранилищем.

Язык программирования C имеет статические объекты, объекты стека и объекты кучи.

Есть ли в Python статические объекты, объекты стека и объекты кучи?

В другом посте я видел, что CPython выделяет все объекты в куче. Означает ли это, что все объекты в Python являются объектами кучи?

Но у Python также есть статические методы. Являются ли статические методы в Python статическими объектами в книге PLP?

Благодарю.

1 ответ

Решение

Объекты Python в основном являются объектами кучи - однако в CPython есть некоторые специальные одноэлементные значения PyObject, которые являются статическими в C; хотя это деталь реализации. Например, обычные встроенные типы имеют статическую продолжительность хранения. Нет известных мне стековых (Python) объектов.

Статическая продолжительность хранения, как здесь понимается, не имеет абсолютно никакого отношения к статическим методам.

Другие вопросы по тегам