call by value, call by reference, call by assignment 차이

PhilAI·2023년 6월 1일
0

함수란?

  • 어떤 작업을 수행하는 코드를 모아 이름을 붙인 것
  • 변수를 이용해 데이터에 이름을 붙이는 것처럼, 함수를 이용해 프로그램 조각에 이름을 붙일 수 있음
  • 필요한 데이터를 전달받아 함수에 넣으면, 함수의 결과값을 반환해줌
  • 주어진 문제를 작은 단위의 문제로 나누어 풀게 되는데 이때, 작은 단위의 문제를 해결하기 위한 함수를 여러개 만들어 큰 문제를 풀 수 있도록 함
  • 함수는 독립적 기능을 수행하는 프로그램 단위로 구성되어 읽기 쉽고 이해하기 쉬움
  • 함수는 한번 만들어 재사용이 가능하기에 프로그램의 양을 줄여 생산성을 높일 수 있음

함수를 호출하는 방법은?

C언어

  • call by value

    • 함수에서 값을 복사해서 전달하는 방식
    • 인자로 전달되는 변수를 함수의 매개변수에 복사
    • 이렇게 복사되면 인자로 전달한 변수와는 별개의 변수가 되면, 매개변수를 변경해도 원래의 변수에는 영향을 주지 않음
    • 원본 값을 바꿀 필요가 없는 경우에 사용하는 방식
  • call by reference

    • 함수에서 주소 값 자체를 복사해서 넘겨주는 방식
    • 함수 안에서 인자의 값이 변경되면, 인자로 전달된 객체의 값도 함께 변경

파이썬

  • 파이썬의 경우 함수의 호출 방식으로 callby Assignment를 사용 (Call by Assignment는 객체에 따라 다르게 작동하는 방식을 의미함)
  • 명시적인 Call by Reference 혹은 Call by Value 라는 개념이 존재하지 않음
  • Mutable Object 는 Call by reference의 형태로 참조형으로 변수를 다루며 Immutable Object는 Call by value 의 형태로 변수를 핸들링함.
    • immutable object
      • 수치, 문자, 튜플
      • 함수 내에서 formal parameter 값이 바뀌어도, actual parameter에는 영향이 없음
    • mutable object
      • 리스트, 딕셔너리, 집합형
      • mutable 객체가 함수의 argument로 넘어가면 call by reference로 동작
      • object reference가 전달되어 actual parameter의 값에 영향을 미칠 수 있음
profile
철학과가 도전하는 Big Data, AI

0개의 댓글