Кортежи являются неизменяемыми, что означает, что они не могут быть изменены, только заменены.
В вашем первом фрагменте вы фактически создаете список, но давайте сделаем его кортеж ради примера:
tupl = tuple(string.lower() for string in tupl)
Если вы запустите id(tupl)
до и после этой строки, вы увидите, что идентификатор изменяется, так как эта строка создает новый кортеж, но присваивает ему то же имя, tupl
. Например:
tupl = ('Hello', 'World')
old_id = id(tupl)
print(old_id)
tupl = tuple(string.lower() for string in tupl)
new_id = id(tupl)
print(new_id == old_id, new_id)
Пример вывода:
140562289770120
False 140562192307208
Единственное отличие во втором фрагменте состоит в том, что он назначает новый объект новому имени и оставляет старое имя нетронутым.