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
반응형
'Python' 카테고리의 다른 글
파이썬 중급 #079 리스트 - 리스트 함축-거듭제곱 표현하기 [x**2 for x list] (0) | 2022.05.25 |
---|---|
파이썬 중급 #077 리스트 - 참조로 호출하기(call by reference) (0) | 2022.05.24 |
파이썬 중급 #076 리스트 - 깊은 복사(deep copy)-인덱스복사 (3) (0) | 2022.05.22 |
파이썬 중급 #075 리스트 - 깊은 복사(deep copy) (2) (0) | 2022.05.21 |
파이썬 중급 #074 리스트 - 깊은 복사(deep copy) (1) (0) | 2022.05.20 |
댓글