Найти - Пользователи
Полная версия: Глупый вопрос насчет констант.
Начало » Python для новичков » Глупый вопрос насчет констант.
1 2 3
droft1312
Зачем вообще нужны константы? Я знаю, что они неизменяемы, но в чем их практическая суть?В каких случаях их нужно использовать?
P.S: только начинаю изучать python, поэтому и задаю такие глупые вопросы) в гугле ответа не нашел.
JOHN_16
droft1312
в питоне нет констант по аналогии с С/С++ и т.п. Есть переменные. Поэтому о чем вопрос не понятно.
terabayt
JOHN_16
а кортеж?
GreyZmeem
terabayt
Константа (из вики) - способ адресации данных, изменение которых рассматриваемой программой не предполагается или запрещается.
А данные внутри кортежа могут меняться.
alex925
GreyZmeem
А данные внутри кортежа могут меняться.
И как же это по вашему данные могут измениться в кортеже?

P.S Изменение кортежа и создание нового это совершенно разные операции.

a = (1, 2)
b = a
print(a is b)
 
b = b + (3, 4)
print(a is b)
В первом случае a и b ссылаются на один и тот же объект (в следствии этого мы получаем true при проверке на соответствие объектов), а во 2 случае после операции b + (3, 4) создался новый объект и на это явно указывает вывод проверки print(a is b).
GreyZmeem
alex925
>>> my_tuple = ([1, 2], [3, 4])
>>> my_tuple
([1, 2], [3, 4])
 
>>> my_tuple[0][0] = -1
>>> my_tuple
([-1, 2], [3, 4])
 
>>> del my_tuple[0][0]
>>> del my_tuple[0][0]
>>> my_tuple
([], [3, 4])
alex925
Ты не кортеж меняешь, ты меняешь список внутри кортежа.
GreyZmeem
alex925
Ты не кортеж меняешь, ты меняешь список внутри кортежа.
Согласен. Остались ли в кортеже те же самые данные?
terabayt
GreyZmeem
Остались ли в кортеже те же самые данные?
да, в кортеже по-прожнему записаны адреса на объекты списков
>>> a = [1,2]
>>> b = [3,4]
>>> b.__contains__
<method-wrapper '__contains__' of list object at 0x7f3d08d69388>
>>> a.__contains__
<method-wrapper '__contains__' of list object at 0x7f3d04af5b88>
>>> c = (a, b)
>>> for i in c:
...  print(i.__contains__)
... 
<method-wrapper '__contains__' of list object at 0x7f3d04af5b88>
<method-wrapper '__contains__' of list object at 0x7f3d08d69388>
>>> a[1] = 4
>>> del(a[0])
>>> a
[4]
>>> for i in c:
...  print(i.__contains__)
... 
<method-wrapper '__contains__' of list object at 0x7f3d04af5b88>
<method-wrapper '__contains__' of list object at 0x7f3d08d69388>
alex925
Да остались теже самые данные, если быть точным осталась лежать ссылка на объект списка.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB