본문 바로가기
Python

파이썬 초급 #050 함수 - 참조값에 의한 인수 전달-문자열(string)(call by value)

by Smart Factory in 2020 2022. 4. 15.
728x90
반응형

안녕하세요. 스마트 팩토리입니다. 
참조값에 의한 인수 전달-문자열(string)(call by value)에 대해 알아보겠습니다. 

 

1. 참조값에 의한 인수 전달-문자열(string)(call by value)

가. 참조값에 의한 인수 전달-문자열(string)(call by value)
    문자열의 경우도 문자의 값이 인수로 전달되어 변경되지 않는다. 
    이를 immitable object 한다. 
    이는 해당 인수의 주소값을 이해할 수 있다. 
   함수 내에서 값이 변경된 경우 해당 변수의 값은 새로운 객체에 저장되어 진행된다. 

 

함수 부분 

def addstr(string):
    string+="반갑습니다. "
    print("addstr() 내에서 string 값 : ", string)
    print("addstr() 내에 string 주소 값 : ", id(string))

------------------------------------------------------------

메인 영역 

name=input("이름을 입력하세요 :")
print("함수 호출 전 name",name)
print("함수 호출 전 name 주소값 :",id(name))

 

이름 변수에 이름을 입력 받아 그 값을 함수로 보내서 출력되게 하는 코드입니다. 그 전에 먼저 이름값과 주소 값을 출력합니다.

addstr(name)

함수부분으로 문자열을 출력합니다. 

해당 주소값이 함수 호출전과 다른 것을 알 수 있습니다. 이는 객체를 새로 생성하여 나타냅니다. 


print("함수 호출 후 name", name)
print("함수 호출 후 name 주소값 :",id(name))

 

함수 호출 후 메인에서 name 과 주소값을 출력합니다. 

문자열도 함수를 통해서 값이 전달되어서 새로운 객체를 형성하여 값을 출력한다는 것을 알 수 있습니다. 

 

 

 

def addstr(string):
    string+="반갑습니다. "
    print("addstr() 내에서 string 값 : ", string)
    print("addstr() 내에 string 주소 값 : ", id(string))

name=input("이름을 입력하세요 :")
print("함수 호출 전 name",name)
print("함수 호출 전 name 주소값 :",id(name))

addstr(name)
print("함수 호출 후 name", name)
print("함수 호출 후 name 주소값 :",id(name))

 

 

 

 

728x90
반응형

댓글