В Python — нет переменных. И как теперь жить? Python Memory Management на пальцах

preview_player
Показать описание
Да-да, в Python нет переменных. Как так вышло и что с этим делать? Как работает с оперативной памятью Python? Что такое Stack и Heap и как они используются? Какие особенности mutable и immutable данных связаны с этим?
Сочный материал для тех, кто хочет глубже понимать, как работает интерпретатор CPython, и использовать это для написания более эффективных программ.

0:00 О чём пойдёт речь
0:43 Об оперативной памяти
3:12 Stack и Heap в оперативной памяти
7:19 Как использует память Python?
10:50 Неизменяемые строки
11:49 Про списки и оператор is
14:11 Про кортежи
16:15 Garbage Collector и подсчёт ссылок
20:41 Передача объектов в функции по ссылке
24:18 Выводы

/****************** about ******************/

Меня зовут Алексей Голобурдин, я программирую с 2004 года и на этом канале делюсь своим опытом. Я основатель и руководитель компаний:

Рекомендации по теме
Комментарии
Автор

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

binaryman
Автор

25 минут видео, чтобы озвучить примерно следующее "В C# существуют две разновидности типов: ссылочные типы и типы значений. В переменных ссылочных типов хранятся ссылки на их данные (объекты), а переменные типа значений содержат свои данные непосредственно. Две переменные ссылочного типа могут ссылаться на один и тот же объект, поэтому операции над одной переменной могут затрагивать объект, на который ссылается другая переменная. При использовании типов значений каждая переменная имеет собственную копию данных, и для операций с одной переменной невозможно повлиять на другую (за исключением inrefслучаев, и out переменных параметров; см. модификатор ref и out). Ну, а в Пайтоне существуют только переменные ссылочного типа, поскольку в Пайтоне всё является объектами".

ВикторЗырин-ич
Автор

Спасибо за выпуск. Следующая идея для ролика: Рассказать/показать как работать с утечками в памяти. Думаю, большинству будет полезно как хантиться за memory leaking'ом.

nazimtairov
Автор

Переменная (программирование) — поименованная, либо адресуемая иным способом область памяти, адрес которой можно использовать для осуществления доступа к данным и изменять значение в ходе выполнения программы.

Если давать такое определение, то объект в куче можно назвать переменной, а в коде мы ссылаемся на эту переменную через ссылки (масло масленное). Ролику конечно лайк в любом случае

MrRussianuser
Автор

Алексей, ещё не посмотрел видео, но уже знаю, что будет годнота. Большое спасибо за рассматривание intermediate топиков, таких видео мало. Успехов с каналом!

mkhnuser
Автор

Открыл для себя хранение данных с абсолютно новой стороны. Раньше вообще не задумывался как и где все это дело хранится. Спасибо!

OmgOrganic
Автор

Хосподя! Спасибо Алексею! Я только изучаю вот это вот все))) Но, в таком доступном формате изложения я еще не встречала! Прям обняла))

НадеждаКостюченко-дд
Автор

Ну как вы это делаете, не туториал а прям полезный подкаст, хочется слушать вас с чайком и печеньками)

alisherbekrakhimov
Автор

Спасибо за отличную подачу крайне важной темы. Давно были попытки найти хорошее объяснение работы пайтона с памятью, но только здесь удалось получить наиболее исчерпывающее :)

andro_id
Автор

А теперь вспоминаем что ссылка - это частный случай переменной)

hatiko
Автор

Впервые наткнулся на канал. Во-первых спасибо за подробности, во-вторых спикер (вероятно автор) молодец в плане хорошо поставленной дикции, , или монтажер молодец, в любом случае приятно слушать инфу без "эээ", "аааа", "ээээммм". Да и инфа полезная. Здорово!

goodspochtoy
Автор

Только пример с копией изменяемой структуры не совсем сработает при бОльшей вложенности. Например списки в списках. В копии вложенные структуры будут ссылаться туда же, куда и вложенные в оригинал структуры. В этом случае может помочь функция deepcopy() из пакета copy

andreiosipov
Автор

Круто объяснил, все понятно и просто стало осознавать

derevo_doma
Автор

Спасибо за прекрасное объяснение! Но у меня остался один вопрос. Как это в общем это обозвать, что проверяя ссылки на число или None, там было больше ссылок чем в коде(Что бы я мог нагуглить подобные случаи)? Я так понимаю так ссылаются на не изменяемые типы данных, чтобы экономить память.

billvoidcipher
Автор

Алексей, спасибо за выпуск!
Рассмотрите, пожалуйста, тему "Утечки памяти в Python", мало кто задумывается об этом, в нашем любимом языке (

АндрійБуханенко
Автор

Супер, только в примере про getrefcount посчитались не a и b, в них лежит нан так как там был вызов функции.

import sys
def empty(): pass
print(sys.getrefcount(empty))

тоже напечатает 2 :)

maxtaranenko
Автор

Качественно записано/сделано, хорошо поставленная речь - приятно слушать. Надеюсь и дальше продолжите рассматривать углублённые темы, очень интересно

execution
Автор

Спасибо! Гениальное видео! Пожалуйста, сделай видео про unix утилиты sed и awk

ЕрвандАгаджанян-вк
Автор

Начало объясняет азы плюсов)), стек, куча

romanbush
Автор

Очень годное видео! Все эти "подкапотные штуки" - очень интересная тема и её очень мало в русскоязычном сегменте youtube или блогосфере. Спасибо!

georgiy_kulagin
visit shbcf.ru