Pull to refresh

Comments 10

Как устроены переменные в Python

Можете объяснить, что нового Вы рассказали относительно учебников из интернета?

Не лучший пересказ того, что есть в интернете.

Например это:

https://pythonchik.ru/osnovy/peremennye-v-python

https://skillbox.ru/media/code/peremennye-v-python-chto-eto-takoe-i-kakie-oni-byvayut/

--------------------

Вот Алиса Яндекса рассказывает и дает ссылки на первоисточники :

Внутреннее представление переменных в языке Python заключается в том, что переменная хранит не само значение, а ссылку на его адрес в памяти. Это связано с динамической типизацией языка: значения присваиваются переменным не при компиляции, а во время выполнения программы. skillbox.rupracticum.yandex.ru

Структура переменных

Переменная состоит из трёх частей:

  1. Имя (идентификатор) — название, придуманное программистом для обращения к переменной.

  2. Значение — информация, которая хранится в памяти компьютера и с которой работает программа. Значение всегда принадлежит к какому-либо типу данных.

  3. Адрес — номер ячейки памяти, в которой хранится значение переменной.

 skillbox.ru

Тип переменной определяется исходя из значения, которое ей присвоено. Например, при присвоении строки в двойных или одинарных кавычках переменная имеет тип 

str

, а при присвоении целого числа — 

int

metanit.com

Примеры кода

Чтобы продемонстрировать внутреннее представление переменных, можно использовать функцию 

id()

. Она возвращает уникальный идентификатор объекта, на который ссылается переменная. skillbox.rudevpractice.rupythonchik.ru

Пример:

x = 4
print(id(x))  # Выведет 2056817043856 — адрес объекта с числом 4.  
Скопировать

В этом примере при инициализации переменной 

x

 программа создала объект с числом 4, принадлежащий к классу 

int

. Внутри переменной содержится не сам объект, а его адрес. skillbox.ru

# Большие числа могут создавать новые объекты x = 1000 y = 1000 print(f"x is y: {x is y}") # Обычно False

Вот это интересно: когда могут, а когда не могут?

видимо, имелось в виду "принудительное интернирование".

ужас, что только не придумают в новых языках программированиях, чтобы программа работала еще медленее, чем у её предшественников!

В разделе про множественное присваивание два раза один и тот же пример.

Под конец статья сдулась, если честно. Но спасибо за быстрый обзор и напоминание. Как шпаргалка начинающим подойдет. Только надо переформатировать блоки кода - у меня они дублируются и криво печатаются.

Все примеры с кодом задублированы.
И в принципе как-то мало комментариев и выводов print - не всегда понятен результат(
Да, спасибо за быстрое напоминание, иногда нужно такое.

К слову, материал очень похож на это: https://www.youtube.com/watch?v=Bz3ir-vKqkk
Если вы позиционируете материал как пособие для новичков, то для повышения качества подачи стоит добавить инфографику и схемы (как, например, в видео по ссылке выше).
Ну и про ссылочки на источники не забывайте.

А вы пробовали искать на Ютубе например?

Вот Никита Соболев в своем "Лучшем курсе по питону" уже освещал эту тему и делал это гоооораздо глубже.

https://youtu.be/crSzQKfevZU

Перед тем как писать какую-то познавательную статью, стоит посмотреть: а что было сделано до меня?

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

Sign up to leave a comment.

Articles