Как работает передача ссылки в функцию в Python?

Аватар пользователя Ivan Gagarinov
Ivan Gagarinov
20 мая 2024

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

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

Вот пример, который иллюстрирует это поведение:

def modify_list(lst):
    lst.append(4)
    print("List inside function:", lst)

my_list = [1, 2, 3]
print("Original list:", my_list) # => [1, 2, 3]

modify_list(my_list)
print("List outside function:", my_list) # => [1, 2, 3, 4]

В этом примере мы передаем список my_list в функцию modify_list(). Функция добавляет элемент 4 в список. Когда мы печатаем список до и после вызова функции, мы увидим, что список изменится внутри функции и измененный список будет доступен за пределами функции.

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

0 0

Есть что добавить? Зарегистрируйтесь

или войдите в аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Курсы по программированию в Хекслете

Программирование

Веб-разработка

Разработка, верстка и деплой сайтов и веб-приложений, трудоустройство для разработчиков

Frontend-разработка

Разработка внешнего интерфейса сайтов и веб-приложений и верстка

Создание сайтов

Разработка сайтов и веб-приложений на JS, Python, Java, PHP и Ruby on Rails

Backend-разработка

Разработка серверной части сайтов и веб-приложений

Тестирование

Ручное тестирование и автоматизированное тестирование на JS, Python, Java и PHP

Аналитика данных

Сбор, анализ и интерпретация данных на Python

Интенсивные курсы

Интенсивное обучение для продолжающих

DevOps

Автоматизация настройки локального окружения и серверов, развертывания и деплоя

Математика для программистов

Обучение разделам математики, которые будут полезны при изучении программирования

JavaScript

Разработка сайтов и веб-приложений и автоматизированное тестирование на JS

Тест-драйв

Python

Веб-разработка, автоматическое тестирование и аналитика данных на Python

Java

Веб-разработка и автоматическое тестирование на Java

PHP

Веб-разработка и автоматическое тестирование на PHP

Ruby

Разработка сайтов и веб-приложений на Ruby on Rails

Go

Курсы по веб-разработке на языке Go

Верстка

HTML

Современная верстка с помощью HTML и CSS

SQL

Проектирование базы данных, выполнение SQL-запросов и изучение реляционных СУБД

Git

Система управления версиями Git, регулярные выражения и основы командой строки

Бесплатные курсы

Бесплатные курсы по тестированию, дата-аналитике, верстке, программированию на Python, Java, PHP и JavaScript.

Базы данных

Фреймворки