ВВЕДЕНИЕ
Все, кто умеет программировать или изучает его, слышали об ООП (объектно-ориентированном программировании) и Python как о самом популярном языке программирования на языке высокого уровня.
И это нормально, потому что буквально все является объектом в питоне, и каждый из них относится к определенному классу:
Даже функции, методы и все прочее являются объектами:
ID И ТИП
Функция id() — это встроенная функция Python, которая получает один параметр для возврата идентификатора объекта.
Синтаксис:
См. пример функции id():
ИЗМЕНЯЕМЫЕ ОБЪЕКТЫ
Как обычно, изменяемые объекты являются контейнерами другого типа данных, целых чисел, строк или чего-то еще, поэтому, когда мы используем функцию id(), они возвращают тот же номер идентификатора.
Посмотрите на следующие примеры, чтобы понять это.
- Сначала со списком:
- Теперь с персонажами:
НЕИЗМЕННЫЕ ОБЪЕКТЫ
Неизменяемый объект — это тот, что если вы пытаетесь что-то изменить, то внешне вы его меняете, а на самом деле вы создаете новый объект с другим id, но с данными первого объекта, вроде чисел на нашем примере.
В итоге:
ПОЧЕМУ ЭТО ВАЖНО И НАСКОЛЬКО ПО РАЗНОМУ PYTHON ОБРАБАТЫВАЕТ ИЗМЕНЯЕМЫЕ И ИММУТАЛИРУЕМЫЕ ОБЪЕКТЫ
Главный фактор, о котором следует помнить, заключается в том, что эффективность использования памяти сильно зависит от использования правильных объектов.
Когда мы вызываем объект по ссылке в функции, мы можем изменить исходное значение объекта. Чтобы избежать этого, нам нужно создать копию () из исходного объекта. Неизменяемые объекты можно вызывать по ссылке, потому что их значение в любом случае нельзя изменить.
По ссылке:
Как видно из приведенного выше примера, мы вызвали список через вызов по ссылке, поэтому изменения вносятся в исходный список.
Теперь перейдите по значению:
Здесь, когда мы пытаемся изменить значение переменной «b», используя функцию «update(n)», функция получает только значение переменной, а не саму переменную, тем самым значение функции id() равно идентичны, мы ничего не меняем, пока значение 'вызов по значению' не 'по ссылке'.
КАК АРГУМЕНТЫ ПЕРЕДАЮТСЯ ФУНКЦИЯМ И ЧТО ЭТО ЗНАЧИТ ДЛЯ ИЗМЕНЯЕМЫХ И ИММУТАЛИРУЕМЫХ ОБЪЕКТОВ
В Python аргументы всегда передаются функциям по ссылке.