Object Reference #1 Reference

정은경·2020년 5월 4일

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. 느낀 점

profile
#의식의흐름 #순간순간 #생각의스냅샷

0개의 댓글