«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Когда Python использует вызов по ссылке и вызов по ссылке на объект?

Когда Python использует вызов по ссылке и вызов по ссылке на объект?

Опубликовано 8 ноября 2024 г.
Просматривать:379

When Does Python Use Call by Reference and Call by Object Reference?

Вызов функций Python по ссылке (дубликат)

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

Пример 1: вызов по значению

k = 2

def foo(n):
    n *= n
    return n

j = foo(k)
print(j)  # 4
print(k)  # 2

Здесь значение k остается неизменным после вызова функции foo, поскольку Python передает аргументы по значению.

Пример 2: вызов Global

Чтобы изменить переменную в вызывающей функции, можно использовать ключевое слово global.

n = 0

def foo():
    global n
    n *= n
    return n

В этом случае ключевое слово global позволяет изменить n внутри функции foo, и его значение будет обновлено в вызывающей функции.

Передача по ссылке на объект в Python

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

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

Например:

def append_one(li):
    li.append(1)

x = [0]
append_one(x)
print(x)  # [0, 1]

В этом коде функция Append_one добавляет 1 к списку x. Поскольку список передается по ссылке на объект, любые изменения, внесенные в список внутри функции, будут отражены в вызывающей функции.

Передача по ссылке или передача по ссылке на объект

  • Передача по ссылке: Исходный блок переменной передается вызываемой функции, что позволяет отражать любые изменения в содержимом переменной при вызове. function.
  • Передача по ссылке на объект: Ссылка на исходный блок объекта передается вызываемой функции. Изменения объекта отражаются как в вызывающих, так и в вызываемых функциях, но изменения в самой переменной (поле) — нет.

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

Заявление о выпуске Эта статья перепечатана по адресу: 1729140861. В случае каких-либо нарушений, пожалуйста, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3