Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
55 / 13 / 2
Регистрация: 26.10.2014
Сообщений: 1,107

Переменные и ОЗУ

13.06.2021, 08:22. Показов 1404. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Я тут начал копать, как работают переменные в Python, и был поражен.
До сего дня я думал, что переменные в Python работают так же, как в компилируемых языках со статической типизацией.
Ан-нет!
Python
1
2
3
4
5
6
>>> name = "John"
>>> hex(id(name))
'0x28632eb17b0'
>>> name = "Constantine"
>>> hex(id(name))
'0x28632eb3af0'
То есть, у нас не выделяется одна ячейка в памяти, а оно как-то расходится.
Позже я узнал, что через id мы получаем адрес уникального объекта. Является ли он адресом в ОЗУ?
Теперь я совершенно не пойму, как работают переменные в Python.
Пожалуйста, помогите разобраться!
Заранее благодарен.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.06.2021, 08:22
Ответы с готовыми решениями:

Перессылка массива данных из одного места ОЗУ в другое место ОЗУ
Есть ли какой-нибудь примерчик программки, которая выполняет пересылку массива данных размерностью 15 из одной области ОЗУ в другую.

Что будет если в 1 слот поставить 2 ОЗУ. Получится ли задублировать ОЗУ?
В теории. Например две одинаковые планки? Зачем? Любопытство, ну и есть кое какие мысли по этому) Может кто пробовал?

Перестали работать вместе озу. Все слоты рабочие, проверял другой озу
Проблемы с 2-мя плашками по 4gb, которые начали отказывать работать вместе. Есть подозрения на биос настройки, так как работают другие 2...

9
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
13.06.2021, 09:19
jonikster, Встречный вопрос - а зачем это нужно?
1
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
13.06.2021, 15:24
jonikster, не понял, с чего должна быть одна ячйка в памяти?
Переменные в питоне это не "коробочки" как в других ЯП, у них нет типа и размера, это как стикер-наклейка на объекте. Присваивание никогда ничего не копирует, когда пишем a=b то просто на тот объект, на который ссылался b приклеиваем еще один стикер. Теперь на объект ссылаются две переменные (НЕ друг на друга, они обе ссылаются на объект, но a НЕ ссылается на b). То есть объект создается и вплоть до уничтожения лежит в одном месте, на него можно приклеить любое количество стикеров или оторвать их все (del a). Если стикеров не осталось, объект удаляется. Именно у объекта есть тип и размер и счетчик ссылок, у переменной нет ничего - это ссылка, стикер, веревочка, бесплотное нечто, что просто приведет нас к объекту.

Добавлено через 2 минуты
для твоего примера -ты создал строковой объект где то в памяти, приклеил к нему стикер что его назовем name. Этот стикер нас приведет к этому объекту и его адресу в памяти. Но потом ты создал другой объект и переклеил стикер с первого на второй (первый уничтожен, у него нет стикеров, память освобождена), теперь name ведет нас к другому объекту и естественно к другому адресу.
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
14.06.2021, 11:57
Цитата Сообщение от Welemir1 Посмотреть сообщение
не понял, с чего должна быть одна ячйка в памяти?
Возможно, потому что мы пишем в одну и ту же переменную name.

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

Не думал, что мне придётся прибегать к яве, чтобы объяснять, как работает код на питоне.
Java
1
2
3
4
5
6
7
8
9
10
11
public class Test {
    public static void main (String[] args) {
        Object name;  // ссылка на объект
        name = new String("John");                          // name = "John"
        System.out.println(System.identityHashCode(name));  // print(id(name))
        name = new String("Constantine");                   // name = "Constantine"
        // ссылка поменялась. На объект "John" больше нет ссылок,
        // его потом удалит сборщик мусора
        System.out.println(System.identityHashCode(name));
    }
}
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
14.06.2021, 12:51
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
Возможно, потому что мы пишем в одну и ту же переменную name.
вот как раз наоборот, для понимания важнее иметь представления что объект один (у него есть тип и размер), а переменные это лишь стикеры или ссылки на него. Тогда не будет представления что мы "пишем в переменную", мы на существующий объект приклеиваем стикер, получаем ссылку. Потому и адреса разные, что у переменной нет адреса, он есть у объекта, на который она ссылается.
А вот в джаве да, переменная это коробочка, у нее есть тип и размер, положить туда можно лишь данные этого типа.
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
14.06.2021, 13:36
В Тартар стикеры.

Мышление не переделаешь.

Есть переменная, в неё можно записать значение. А то, что в переменную записывается ссылка на объект - так это мелочи. Пример с явой выше.

Добавлено через 5 минут
Цитата Сообщение от Welemir1 Посмотреть сообщение
А вот в джаве да, переменная это коробочка, у нее есть тип и размер, положить туда можно лишь данные этого типа.
Прокашливается.
Java
1
2
3
4
5
6
7
8
9
public class Test {
    public static void main (String[] args) {
        Object name;
        name = new String("John");
        System.out.println(name);
        name = new Integer(42);
        System.out.println(name);
    }
}
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
15.06.2021, 10:53
ну так тип то все равно есть - обджект, инт туда ты уже не сунешь, а в питоне все можно, потому как не коробочка. А мышление надо переделывать новичкам при обучении.
1
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
15.06.2021, 11:46
Живу без переделанного мышления и чувствую себя нормально. Вы на lua не писали - вот вынос мозга с типами.
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38203 / 21135 / 4310
Регистрация: 12.02.2012
Сообщений: 34,740
Записей в блоге: 14
18.06.2021, 11:50
jonikster, не совсем понимаю, что вызвало смятение... Переменная - это место в памяти. Сие пока незыблемо. Но никто не говорил, что это место всегда одно и то же. Проводя аналогию с "коробочкой", можно сказать, что переменная в Питоне - одноразовая коробочка. Создали переменную, можно сколько угодно раз брать ее значение. При присвоении нового значения, старая коробочка с содержимым уходит в мусор, но создается новая с прежним именем.
1
18.06.2021, 13:38

Не по теме:

Цитата Сообщение от Рыжий Лис Посмотреть сообщение
Вы на lua не писали ...вот вынос мозга с типами.
А мы писали... Типы как типы. Как везде. Если ты про классы, то обычно ООП должен предоставлять язык, в который lua встраивается - тот же игровой движок, например. Тогда и ООП будет стандартным.
Вообще lua - лучший скриптовый язык. При условии, что для задачи хватает его возможностей.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.06.2021, 13:38
Помогаю со студенческими работами здесь

Какой эффект будет если к ПК с 1024 мб ОЗУ, процессор одноядерный добавить 1-2 гб ОЗУ
Какой эффект будет если к ПК с 1024 мб ОЗУ, 2.1гц, Ram 512, проц.(одноядерный) добавить 1-2 гб ОЗУ, заметно ли увеличится...

Не запускается виндовс после установки второй планки озу 1333mhz к озу 1600mhz (ddr3)
После установки 2й планки памяти ddd3 1333mhz к ddr3 1600mhz (обе по 4гб, обе good ram) комп выдал такую ошибку system has...

Игры используют только 1 плашку озу,то есть загружают под 50 % озу а 2 плашка отдыхает
Тип ЦП QuadCore Intel Core i5-7500, 3600 MHz (36 x 100) Системная плата Asus H110M-R (2 PCI-E x1, 1 PCI-E x16, 2 DDR4 DIMM, Audio,...

ОЗУ/Материнка как достичь максимальных показателей на конфиге (не разогнать ОЗУ до нужной герцовки)
Всем привет. Помогите советом пожалуйста. Собрал систему вот на таком конфиге. Но не могу никак заставить ОЗУ работать на высокой Герцовке....

ОЗУ 800Mhz не работает с ОЗУ 667Mhz, зависает комп
ОЗУ 1Gb 800Mhz не работает с ОЗУ 1Gb 667Mhz, зависает комп, сказали что надо в биосе что то поменять....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru