본문 바로가기
Python

파이썬 중급 #077 리스트 - 값으로 호출하기(call by value)

by Smart Factory in 2020 2022. 5. 23.
728x90
반응형

안녕하세요. 스마트팩토리입니다.
파이썬 중급 #077 리스트 - 값으로 호출하기(call by value) 에 대해 알아보겠습니다. 

1. 값으로 호출하기 

값으로 호출하기 
 call by value.
-새로운 객체가 생성되는 경우는 원본은 변경되지 않는다. 

 

일반 변수에서 

 

def fcall(x):
    print("~~~~ 함수~~~~안으로 ")
    print("x=",x,"id=",id(x))
    x=100
    print("x=", x, "id=", id(x))

 


x=1
print("x=",x,"id=",id(x))

일반 변수 값을 출력한 결과이다. 


fcall(x)

매개변수가 있는 경우로 x =1을 함수로 보낸 결과 함수내에서 출력된 값은 메인에서와 동일하다. 하지만 그 안에서 x=100을 정의하면 결과는 x값을 100을 출력한다. 이때 x 는 새로운 x로 새로운 객체이다. 이는 즉 매개변수로 받은 x가 아니다. 값으로 받은 경우이기 때문에 그 값만 활용될 뿐 원본 값에 변화가 오지 않는다. 

print("~~~~메인에서 ~~")
print("x=",x,"id=",id(x))

 

함수에서 x 값이 새로 정의 되어도 (x=10) 메인에서 정의된 값 x=1에는 영향을 주지 않는다. 

이를  call by value 라고 한다. 

이는 call by reference와 구분해야 한다. 

def fcall(x):
    print("~~~~ 함수~~~~안으로 ")
    print("x=",x,"id=",id(x))
    x=100
    print("x=", x, "id=", id(x))

x=1
print("x=",x,"id=",id(x))

fcall(x)
print("~~~~메인에서 ~~")
print("x=",x,"id=",id(x))

 

728x90
반응형

댓글