C 하다가 넘어왔는데 파이썬 함수 인자 전달 방식이 도무지 감이 안 잡힙니다. 리스트를 넘겼더니 원본이 바뀌어서 참조 전달인가 했는데, 또 다른 경우엔 안 바뀌어서 혼란스러워요.
def modify(l):
l.append(4)
def rebind(l):
l = [9, 9]
def inc(x):
x += 1
a = [1, 2, 3]
modify(a)
print(a) # [1, 2, 3, 4]
b = [1, 2, 3]
rebind(b)
print(b) # [1, 2, 3]
n = 5
inc(n)
print(n) # 5
같은 리스트인데 append 하면 원본이 바뀌고, 안에서 l = [9, 9] 로 다시 대입하면 원본은 그대로예요. int는 아예 안 바뀌고요. 이 세 개 결과가 왜 다르게 나오는지 하나로 설명해주실 분 계실까요?