Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 14, 2014 17:04:53

Defalt
Зарегистрирован: 2014-06-12
Сообщения: 35
Репутация: +  -2  -
Профиль   Отправить e-mail  

if переменная == ссылка на значение в оперативной памяти: ...

Например:

perem=input("Введите ключ")
if perem not slovar:
tolk=input("Впишите ваше толкование")
slovar[perem]=tolk
=> получается сейчас у переменной perem и tolk ссылки на значение в памяти.
=> Если добавить еще один ключ и его значение в словарь то perem и tolk изменятся => изменится это и в предыдущем вводе?! Т.е. 2 разных ключа не впишутся а будет 2 одинаковых.

==> Если perem - ссылка на значение в оперативной памяти то значение остается в памяти а perem меняет ссылку на другое значение?!

Офлайн

#2 Июнь 14, 2014 18:48:39

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

if переменная == ссылка на значение в оперативной памяти: ...

Зачем такие заморочки? Это питон, тут всё проще

key=input("Введите ключ")
if perem in dct:
    print (dct[key]) 
else:
    dct[key] = input("Впишите ваше толкование")
    



Офлайн

#3 Июнь 15, 2014 09:13:58

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

if переменная == ссылка на значение в оперативной памяти: ...

1. Код содержит синтаксические ошибки => следовательно о результатах его работы вообще нельзя говорить.
2.

Defalt
Если добавить еще один ключ и его значение в словарь то perem и tolk изменятся
Неверное утверждение, значения переменных идентифицируемые в данной точке кода именами perem и tolk не изменятся при помещении их в словарь. Посмотрите при помощи print. Словарь это дополнительный объект в памяти, который содержит ссылки на другие объекты в памяти.
3.
Defalt
Если perem - ссылка на значение….
perem это строка содержащая имя переменной (в модуле есть словарь интерпретатор по этой строке ищет адрес объекта когда он понадобился алгоритму). В обычном коде эта строка вообще не используется. Используются значения объектов в памяти.
>>> a=2
>>> b=2
>>> id(a)
10026052
>>> id(b)
10026052
В этом примере есть 2 имени a,b для одного объекта в памяти. Алгоритмы будут работать с областью памяти по указателю 10026052.



Отредактировано doza_and (Июнь 15, 2014 09:16:57)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version