a = [1,2,3]
b = a
print(id(a))
print(id(b))
print(a is b)
1891118836160
1891118836160
TRUE
주소값 같게 나옴 가리키는 대상이 같기에
A is b 했을때 True라고 뜸 a와b가 가리키는 객체가 같기에
a = [1,2,3]
b = a #주소값을 넣게된다
a[1] = 4
print(a)
print(b)
print(a is b)
[1, 4, 3]
[1, 4, 3]
True
A랑 b랑 같은 값이 나옴, 같은 주소를 바라보고 있기 때문에 그렇다.
이렇게 하면 원하는 결과가 나옴
같은 공간을 바라보는게 아니고
새로 복사한 값을 넣어준 거기 때문에
그렇다면 b 변수를 생성할 때 a 변수의 값을 가져오면서 a와는 다른 주소를 가리키도록 만들 수는 없을까? 다음 2가지 방법이 있다.
>>> a = [1, 2, 3]
>>> b = a[:]
>>> a[1] = 4
>>> a
[1, 4, 3]
>>> b
[1, 2, 3]
>>> from copy import copy
>>> a = [1, 2, 3]
>>> b = copy(a)
변수를 만드는 여러 가지 방법
a, b = ('python', 'life')
print(a)
print(b)
(a, b) = 'python', 'life'
[a, b] = ['python', 'life']
또한 여러 개의 변수에 같은 값을 대입할 수도 있다
>>> a = b = 'python'
이렇게도 가능하다 이렇게 하는게 다른 언어의 기본적인 값을 바꾸는 개념
a = 3
b = 5
temp = a
a = b
b = temp
하지만 파이썬에선 이렇게 가능함
a = 3
b = 5
a, b = b, a
print(a)
print(b)
출력결과
5
3