Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг
ПРИХОДИТЕ УЧИТЬСЯ НОВОЙ ПРОФЕССИИ ЛЕТОМ СО СКИДКОЙ ДО 70% Забронировать скидку
07 Июл 2023
2 мин
2545

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

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

Одной из распространенных проблем, с которой сталкиваются новички в 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’, так как внутри функции мы явно указали, что хотим работать с глобальной переменной.

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

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

Подарок
Забрать подарок