1. 학습목표

2. 학습내용
# 객체 참조 중요한 특징들
# Python Object Reference
# print(__name__)
# __main__
# print(dir())
"""
['__annotations__', '__builtins__', '__cached__', '__doc__',
'__file__', '__loader__', '__name__', '__package__', '__spec__']
"""
## 쉘로우 카피!!!
# id vs. __eq__ (==) 증명
x = {'name': 'kim', 'age': 33, 'city': 'Seoul'}
y = x
# print('EX2-1 -', id(x), id(y))
# EX2-1 - 4319974528 4319974528
# print('EX2-2 -', x == y)
# EX2-2 - True
# print('EX2-3 -', x is y)
# EX2-3 - True
# print('EX2-4 -', x, y)
"""
EX2-4 -
{'name': 'kim', 'age': 33, 'city': 'Seoul'}
{'name': 'kim', 'age': 33, 'city': 'Seoul'}
"""
x['class'] = 10
# print('EX2-5 -', x, y)
"""
EX2-5 -
{'name': 'kim', 'age': 33, 'city': 'Seoul', 'class': 10}
{'name': 'kim', 'age': 33, 'city': 'Seoul', 'class': 10}
"""
z = {'name': 'kim', 'age': 33, 'city': 'Seoul', 'class': 10}
# print('EX2-6 -', x,z)
"""
EX2-6 -
{'name': 'kim', 'age': 33, 'city': 'Seoul', 'class': 10}
{'name': 'kim', 'age': 33, 'city': 'Seoul', 'class': 10}
"""
# print('EX2-7 -', x is z) # 같은 객체인지 판별(id값비교)
# EX2-7 - False
# print('EX2-8 -', x is not z)
# EX2-8 - True
# print('EX2-9 -', x == z) # 값이 같은지만 비교
# EX2-9 - True
# 객체 생성 후 완전 불변 -> 즉, id는 객체 주소(정체성)비교, ==(__eq__)는 값 비교
# 값비교보다 id값을 비교하는 것이 더 빠름! 즉! "is" 메소드로 먼저 체크할것!
# 튜플 불변형의 비교
tuple1 = (10,15,[100,1000])
tuple2 = (10,15,[100,1000])
# 튜플의 경우, 각 튜플 안의 값이 같더라도, id는 다름! 왜?! 불변이니깐!
# print('EX3-1 -', id(tuple1), id(tuple2))
# EX3-1 - 4340346096 4340346312
# print('EX3-2 -', tuple1 is tuple2)
# EX3-2 - False
# print('EX3-3 -', tuple1 == tuple2)
# EX3-3 - True
# print('EX3-4 -', tuple1.__eq__(tuple2))
# EX3-4 - True
list1 = [10,15]
list2 = [10,15]
# 근데, 리스트도 마찬가지구먼!
# print('test-', id(list1), id(list2))
# test- 4341117832 4319993544
3. 느낀 점