함수호출시 인자의 main에서의 변수값 변경여부 질의

아래와 같이 테스트를 해보았습니다.

>>> def try1(a):
...     a=0
...
>>> def try2(b):
...     b[0]=0
...
>>> a=3
>>> b=[3,3,3]
>>> try1(a)
>>> try2(b)
>>> print(a)
3
>>> print(b)
[0, 3, 3]

a는 함수호출이 되어도 변화가 없이 3의 값인데 리스트인 b는 함수호출로 인해 값이 왜 변경되었나요?

yorchoi 421

M 2021년 3월 14일 9:51 오전

목록으로
1개의 답변이 있습니다. 1 / 1 Page

함수에 전달하는 값이 변하는 값(mutable)인지 변하지 않는 값(immutable)인지에 따라 다릅니다.

문자열은 immutable이기 때문에 함수내에서 지역변수로 새로 생성되어 함수를 벗어나면 사라집니다.
리스트는 mutable이기 때문에 전달받은 값을 함수에서 그대로 사용합니다.

박응용

2021년 3월 14일 9:53 오전

제가 작성한 코드에서 a는 문자열이 아닌 정수 값을 할당 받았는데 정수는 immutable 이라는 말씀이신가요? - yorchoi님, 2021년 3월 14일 8:38 오후 추천 , 대댓글
@yorchoi님 네, 숫자도 immutable입니다. - 박응용님, 2021년 3월 14일 11:20 오후 추천 , 대댓글