Рубрики
Без рубрики

Призывая по значению & посредством ссылки в Python

Здравствуйте, ребята, давайте тестируем следующие функции: Def Double (Arg): «Эта функция … Помечено Python, алгоритмы, базы данных, машины.

Привет, народ,

Давайте проверим следующие функции:

def double(arg):
    """ This function takes 'arg' object and multiply it by 2. """
    print('Before: ',arg)
    arg = arg * 2
    print('After: ',arg)

# Calling the function
flist = [10,20]
double(flist )
print('Original : ',flist )

Вывод будет таким:

До: [10, 20] После: [10, 20, 10, 20] Оригинал: [10, 20]

Это означает, что Arg Объект передан функции по значению, и он изменяется только в функциональном номере. Умереть, что Python Разрешить пройти по значению и пройти через ссылку.

Вторая функция

def change(arg):
    """ This function takes 'arg' object and add '30' to it. """
    print('Before: ',arg)
    arg.append(30)
    print('After: ',arg)

# Calling the function
slist = [10,20]
change(slist)
print('Original: ',slist)

Вывод будет таким:

До: [10, 20] После: [10, 20, 30] Оригинал: [10, 20, 30]

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

Давайте объясним, что здесь произойдет …

Поскольку Python позволяет двум типам прохождения объектов, почему вышеуказанные функции ведут себя по-разному?

В Python, если пропущенный объект – Musable Как и списки, словари и наборы всегда передаются в функцию посредством ссылки.

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

Но кажется, что есть Ошибка . с переводчиком.

Чтобы понять, что случилось

Помните, что в первой функции Двойной Объект ARG изменился с использованием Призначающее заявление Итак, что произошло, что правая сторона оператора присвоения выполняется и новый объект, созданный со значением arg * 2, а затем назначен Arg Однако только функциональный набор, однако исходный объект все еще выходит в вызовов.

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

Это объясняет, что случилось.

Я надеюсь, что эта небольшая статья была полезна.

Спасибо

Оригинал: “https://dev.to/tawfikyasser/calling-by-value-by-reference-in-python-12g6”