파이썬에서 함수 호출 시 call by value/ref 를 설명하는 간단한 예제입니다
1. bool, 문자열, 숫자, 리스트, 딕셔너리를 함수에서 변경했을 때
def testFunc2(bValue, sString, nValue, list, dic):
bValue = True
sString = '새로운 문자'
nValue = nValue + 100
list.append(100)
dic['과학'] = 70
bValue = False
sString = '이전 문자'
nValue = 10
list = [1,2,3]
dic = {'국어': 80, '수학': 95, '영어': 80}
testFunc2(bValue, sString, nValue, list, dic)
print(bValue)
print(sString)
print(nValue)
print(list)
print(dic)
결과: 리스트와 딕셔너리만 call by ref 로 넘겨짐
False
이전 문자
10
[1, 2, 3, 100]
{'국어': 80, '수학': 95, '영어': 80, '과학': 70}
2. 함수에서 딕셔너리 생성해서 넘기기
def testFun():
item = {}
item['x'] = 100
item['y'] = 200
item['z'] = 200
return item
datas = testFun()
print(datas)
결과:
{'x': 100, 'y': 200, 'z': 200}
3. (주의)함수에서 넘겨 받은 리스트나 딕셔너리를 초기화하면 다른 로컬 변수를 함수 내에 새로 선언 한 것으로 판단하게 되어 call by ref 처럼 작동하지 않게 된다.
def testFunc3(list, dic):
list = []
dic = {}
list.append(4)
dic['국어'] = 80
list = [1,2,3]
dic = {'국어': 80, '수학': 95, '영어': 80}
testFunc3(list, dic)
print(list)
print(dic)
결과:
[1, 2, 3]
{'국어': 80, '수학': 95, '영어': 80}
'개발 > 파이썬' 카테고리의 다른 글
파이썬 아나콘다 32비트 설치/재설치 (4) | 2019.11.14 |
---|---|
[파이썬] 딕셔너리를 이용한 카운팅, 정렬 예제 (2) | 2019.11.02 |
[파이썬] 웹 페이지 스크랩 하기(BeautifulSoup 이용) (2) | 2019.10.20 |
파이썬의 for 루프 (1) | 2019.06.16 |
[CREON PLUS API 활용] BlockRequest 와 Request (362) | 2018.12.11 |
파이썬 윈도우 메시지 펌프 처리 예제 (0) | 2018.12.08 |
댓글