Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг
07 Июл 2023
2 мин
2841

Передача переменных по ссылке в Python

Одной из распространенных проблем, с которой сталкиваются новички в Python, является понимание того, каким образом передаются переменные в функции и

Освойте Python на курсе от Skypro. Вас ждут 400 часов обучения и практики (достаточно десяти часов в неделю), подготовка проектов для портфолио, индивидуальная проверка домашних заданий и помощь опытных наставников. Получится, даже если у вас нет опыта в IT.

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

Рассмотрим пример:

def change(var):
    var = 'Changed'

variable = 'Original'
change(variable)
print(variable)

В этом случим случае, после выполнения кода на печать будет выведено значение «Original», несмотря на то, что в функции произошло изменение переменной. Это происходит потому, что в Python все объекты (включая переменные) передаются по ссылке. Однако, если объект неизменяемый (как в нашем примере со строкой), то любые изменения внутри функции не повлияют на исходную переменную.

Если бы вместо строки был бы использован изменяемый объект (например, список), то изменения внутри функции повлияли бы на исходный объект. Рассмотрим такой пример:

def change(var):
    var.append('Changed')

variable = ['Original']
change(variable)
print(variable)

В этом случае на печать будет выведен список [‘Original’, ‘Changed’], так как список — это изменяемый объект и все изменения, совершенные внутри функции, влияют на исходный объект.

Вернемся к изначальному вопросу — как изменить поведение функции так, чтобы даже для неизменяемых объектов она меняла исходную переменную? Решение заключается в использовании внутри функции глобальной переменной с помощью ключевого слова global.

def change():
    global var
    var = 'Changed'

var = 'Original'
change()
print(var)

Теперь на печать будет выведено значение ‘Changed’, так как внутри функции мы явно указали, что хотим работать с глобальной переменной.

В заключение, важно отметить, что использование глобальных переменных — это не всегда хорошая практика, и стоит осторожно и обдуманно использовать такой подход.

Изучайте Python на онлайн-курсе от Skypro «Python-разработчик». Программа рассчитана на новичков без опыта программирования и технического образования. Курс проходит в формате записанных коротких видеолекций. Будет много проверочных заданий и мастер-классов. В конце каждой недели — живая встреча с экспертами в разработке для ответов на вопросы и разбора домашек.

Тест на профориентацию
За 10 минут узнайте, как ваш опыт пригодиться в IT индустрии
Подробнее
Тест на профориентацию

Добавить комментарий