Курс Python → Присвоение и ссылки

Почему присвоение не является копированием? В Python все переменные являются ссылками на объекты. Когда мы присваиваем значение одной переменной другой, мы фактически отправляем ссылку на объект в новую переменную, а не создаем копию самого объекта. Это означает, что если изменить объект через одну переменную, это изменение отразится и на другой переменной, так как они обе ссылаются на один и тот же объект.

Для проверки этого поведения можно воспользоваться функцией id(), которая возвращает уникальный идентификатор объекта. При изменении объекта через одну переменную и последующей проверке идентификаторов через другую переменную, мы увидим, что идентификаторы будут совпадать, что подтверждает, что переменные ссылаются на один и тот же объект.

Это же поведение распространяется и на строки и числа в Python. При выполнении операций с числами или строками, создается новый объект, а не изменяется существующий. Таким образом, даже если мы присваиваем новое значение переменной, это приводит к созданию нового объекта, а не изменению старого.

Интересно, что даже для чисел в Python на уровне языка программирования используется ссылочный подход. Это означает, что при работе с числами также происходит передача ссылки на объект, а не самого значения. Вы можете провести эксперимент сами, используя функцию id() и выполняя операции с числами, чтобы убедиться в этом поведении.

Твои коллеги будут рады, поделись в

Автор урока

Дмитрий Комаровский
Дмитрий Комаровский

Автоматизация процессов
в КраснодарБанки.ру

Другие уроки курса "Python"

  1. Закрытие файла в Python
  2. Функция map() и ленивая оценка
  3. Оператор умножения для вектора
  4. Python Менеджер контекста
  5. Работа с классами данных
  6. Запуск файлового сервера
  7. Функция map() в Python
  8. Python union() функция — объединение множеств
  9. Поиск HTML-элементов с BeautifulSoup
  10. Декоратор защиты анонимных пользователей
  11. Операторы += в Python
  12. Асинхронное выполнение задач в Python
  13. Управление контекстом выполнения кода
  14. Работа с *args и **kwargs в Python
  15. Создание новых списков в Python
  16. Курс по дообучению ChatGPT
  17. Замыкания в Python
  18. Поиск всех индексов подстроки
  19. Импорт объектов из модулей
  20. Карта бомбоубежищ в Москве и Питере
  21. Логирование с Logzero: ротация файла
  22. Открытие и редактирование скриптов Python
  23. Обработка исключений в Python
  24. Работа с изображениями Pillow
  25. Список переменных в Python
  26. Преобразование документов в PDF с помощью Spire.Office
  27. Выбор редактора кода.
  28. discard() — удаление элемента из множества
  29. Работа с PosixPath() в Python
  30. Итерации в Python
  31. Декодирование байтов в строку
  32. Классы данных в Python
  33. Обновление шаблона base.html
  34. Декораторы в Python
  35. Каналы Senior: Python, Java, Frontend, SQL, C++
  36. Метод get для словарей
  37. Распаковка элементов массива
  38. Навыки Python: строки, типы данных
  39. Проверка типа объекта в Python
  40. JMESPath в Python
  41. Генераторы в Python
  42. Управление виртуальными средами в Python
  43. Просмотр внешнего файла в Python
  44. Отладка производительности Python
  45. Проблема сравнения словарей
  46. Вычисление натуральных логарифмов в NumPy
  47. Работа со строками в Python

Marketello читают маркетологи из крутых компаний