Blog | Tag | Local | Media | Guest | Login  RSS
변수에 해당되는 글 1건
2009.09.22 :: python 변수
python 변수
모든 변수는 객체의 레퍼런스
>>> a = 3
>>> b = 3
>>> a is b
True
변수는 모두 레퍼런스. 따라서 a, b는 정수형 객체 3을 레퍼런스하고 있다. a와 b는 가리키고 있는 대상이 동일하므로 a is b의 결과가 1로 나온다. 이 점은 C/C++과는 다른 점. 다시 말해 변수를 선언하면 = 연산자 오른쪽에서 객체가 없으면 객체가 생성되고 레퍼런스 카운트가 증가.

변수 없애기
>>> a = 3
>>> b = 3
>>> del(a)
>>> del(b)
변수를 모두 제거해서 레퍼런스 카운트가 0이 되면 가비지 컬렉터가 정수형 객체 3을 삭제함

튜플, 리스트로 변수만들기
>>> a, b = 'python', 'life'
>>> (a, b) = ('python', 'life')
>>> [a, b] = [
'python', 'life']
>>> a, b = fuction_to_return_tuple()
튜플은 괄호 생략이 가능함.

변수 값 swap 하기
>>> a, b = 'python', 'life'
>>> a, b = b, a
>>> a
'life'
>>> b
'python'

참고
>>> a = [1, 2, 3]
>>> b = a
>>> a[0] = 0
>>> a
[0, 2, 3]
>>> b
[0, 2, 3]
>>> a is b
True
모든 변수는 레퍼런스 변수이므로 '='로 대입시 shallow copy가 일어남
따라서 리스트의 deep copy가 필요한 경우에는 리스트의 모든 요소를 대입해주면 됨.
>>> a = [1, 2, 3]
>>> b = a[:]
>>> a[0] = 0
>>> a
[0, 2, 3]
>>> b
[1, 2, 3]
>>> a is b
False
>>> from copy import copy
>
>> b = copy(a)

정수형, 문자형, 문자열형 객체와 같이 객체의 요소를 얻을 수 없는 객체의 deep copy는?

저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

'프로그래밍' 카테고리의 다른 글

python while  (0) 2009.09.22
python if  (0) 2009.09.22
python 변수  (0) 2009.09.22
python boolean  (0) 2009.09.18
python dictionary  (0) 2009.09.18
python list, tuple  (0) 2009.09.18

 태그 : 

티스토리 툴바