"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Python은 언제 참조에 의한 호출과 객체 참조에 의한 호출을 사용합니까?

Python은 언제 참조에 의한 호출과 객체 참조에 의한 호출을 사용합니까?

2024-11-08에 게시됨
검색:956

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

여기서 Python이 값으로 인수를 전달하기 때문에 foo 함수를 호출한 후에도 k의 값은 변경되지 않은 상태로 유지됩니다.

예 2: 전역에 의한 호출

호출 함수의 변수를 수정하려면 전역 키워드를 사용할 수 있습니다.

n = 0

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

이 경우 전역 키워드를 사용하면 foo 함수 내에서 n을 수정할 수 있으며 해당 값은 호출 함수에서 업데이트됩니다.

객체 참조로 전달 Python

그러나 Python은 값별 호출 또는 참조별 호출을 엄격하게 따르지 않습니다. 대신 객체 참조에 의한 전달이라는 개념을 사용합니다.

Python에서 변수는 객체 자체가 아니라 객체를 참조합니다. 따라서 변수가 함수에 전달되면 객체 자체가 아닌 객체에 대한 참조를 전달합니다.

예:

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

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

이 코드에서 Append_one 함수는 목록 x에 1을 추가합니다. 목록은 객체 참조에 의해 전달되므로 함수 내의 목록에 대한 모든 변경 사항은 호출 함수에 반영됩니다.

참조에 의한 전달과 객체 참조에 의한 전달

  • 참조로 전달: 원래 변수의 상자가 호출된 함수에 전달되어 변수 내용의 변경 사항이 호출에 반영됩니다. function.
  • 객체 참조로 전달: 원본 객체의 상자에 대한 참조가 호출된 함수에 전달됩니다. 객체에 대한 변경 사항은 호출 함수와 호출된 함수 모두에 반영되지만 변수 자체(상자)에 대한 변경 사항은 반영되지 않습니다.

결론적으로 Python은 객체 참조에 의한 전달을 따릅니다. 물건 자체보다는 물건. 이를 통해 함수는 전달된 객체를 수정할 수 있지만 변수 참조 자체에 대한 변경 사항은 호출하는 함수에 다시 전파되지 않습니다.

릴리스 선언문 이 글은 1729140861에서 재인쇄되었습니다. 침해 내용이 있는 경우, [email protected]으로 연락하여 삭제하시기 바랍니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3