[Python] call by value? call by reference?
Mutable vs Immutable
- Mutable object (값 변경 가능)
- list- dict
- set
- Immutable object (값 변경 불가)
- int- float
- string
- tuple
- bool
Python의 변수
- python에서 사용하는 변수는 객체 (python의 모든 것은 객체!?)
- 하나의 객체는 단 하나의 인스턴스로 존재(singleton)
a = 1
a += 2
- a가 가리키는 메모리 공간에 1이라는 값이 할당 (X)
- 1이라는 객체의 인스턴스의 주소값을 a가 가리키게 됨
- 2행이 실행되면 a가 가리키는 인스턴스가 바뀌게 되는 것
- python은 C처럼 변수라는 메모리 공간에 값을 직접 저장하지 않음
- 해당 값의 인스턴스를 가르키고 해당 인스턴스의 Reference count를 증가시킨다
Passed by assignment
- 전달되는 객체의 특성에 따라 call by value 또는 call by reference 처럼 동작한다
- mutable
- call by reference 처럼 보이게 동작 - immutable
- call by value 처럼 보이게 동작 - 예시
a = b = 2
a = 3
print(a, b)
c = d = [1, 2, 3]
c[1] = 10
print(c, d)
>>> 3 2
[1, 10, 3] [1, 10, 3]
def mutable(param):
param += 1
def immutable(param):
param[1] = 10
a = 1
b = [1,2,3,4]
print(a, b)
mutable(a)
immutable(b)
print(a, b)
>>> 1 [1, 2, 3, 4]
1 [1, 10, 3, 4]
-
reference
- https://lee-seul.github.io/concept/python/2018/05/02/python-call-by-object-reference.html -
차후 스터디
- 객체, 인스턴스, reference count etc..
Author And Source
이 문제에 관하여([Python] call by value? call by reference?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@bongbong/Python-call-by-value-call-by-reference저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)